알고리즘/Programmers

[Programmers/Python] 추억 점수

댕주 2024. 11. 17. 23:26

언어 : Python

문제

 

제한 사항

 

1. 문제 분석

  • 사진 속 인물의 이름과 그리움 점수를 기반으로 각 사진의 추억 점수를 계산하는 문제
  • 주어진 데이터를 활용하여 각 사진별로 점수를 계산하고, 이를 순서대로 배열로 반환한다.

2. 계산 로직

  • name 과 yearning 배열을 매핑하여 딕셔너리를 생성한다
  • 각 photo[i] 의 이름이 딕셔너리에 있는 경우 해당 점수를 가져오고, 없는 경우 0으로 처리한다
  • 각 사진의 점수를 합산하여 결과 리스트에 저장한다

3. 제한 사항 분석

  • name 의 길이와 yearning 의 길이는 항상 동일하다
  • name 에는 중복된 이름이 없으므로 딕셔너리로 변환하기 적합하다
  • name 과 yearning 배열의 길이가 최대 100, photo 배열의 길이가 최대 100,
    각 내부 배열의 길이가 최대 100이므로 최대 연산량은 100 x 100 = 10,000. 

4. 문제 풀기

  • 딕셔너리로 매핑
name_yearning = dict(zip(name, yearning))

 

  • 각 사진의 점수 계산
    각 photo[i] 를 순회하여 이름별 점수를 합산한다
    이름이 딕셔너리에 없으면 get(key, 0) 로 기본값 0을 반환한다
photo_scores = [sum(name_yearning.get(person, 0) for person in photo_list) for photo_list in photo]

 

  • 계산한 점수를 배열 형태로 반환한다

  • 전체 코드
def solution(name, yearning, photo):
    # 이름과 그리움 점수를 딕셔너리로 매핑
    name_yearning = dict(zip(name, yearning))
    
    # 각 사진별 추억 점수 계산
    return [sum(name_yearning.get(person, 0) for person in photo_list) for photo_list in photo]