문제
https://school.programmers.co.kr/learn/courses/30/lessons/176963
풀이
사진들의 추억 점수를 photo에 주어진 순서대로 배열에 담아 return 하는 solution 함수를 작성하는 것이 목표인 문제이다. 해당 문제를 풀기 전에 몇 갖지 제한 사항을 확인하고 넘어가자.
- 인물 이름 중에 그리움 점수가 없는 사람도 존재할 수 있으므로 해당 예외 사항 고려 하여야 한다.
- photo는 이차원 배열로 주어진다.
해당 문제의 풀이 과정을 그림으로 표현한다 다음과 같다.
- name : yearning 형태로 dict 자료형을 만든다.
- photo라는 이차원 배열을 순회하면서 그리움 점수를 합산 합 값을 answer = []이라는 새로운 리스트에 추가하면서 진행한 뒤 그 값을 return 한다.
주어지는 name, yearning 배열을 dict으로 묶을 때 그리움 점수가 없는 사람도 존재할 수 있기 때문에, python collections 라이브러리에서 defaultdict(int)을 이용하면 그리움 점수가 없는 사람의 value 값을 0으로 지정할 수 있다.
만약 defaultdict()을 사용하지 않는다면, 일반 python 자료형인 dict을 사용하고 나서, if elements in dict.key()으로 전처리를 해주어야 한다. Python에서는 dict()에 없는 key 값으로 접근하면 오류가 나기 때문이다.
해당 제한 사항을 고려한 상태로 코드를 작성하면 다음과 같다.
from collections import defaultdict
def solution(name, yearning, photo):
# name, yearning 리스트를 묶어 dict 형으로 만든다.
dict = defaultdict(int)
for i, j in zip(name, yearning):
dict[i] = j
# answer list() 생성
answer = []
# 이차원 리스트 순회
for ary in photo:
value = 0
for person in ary:
value += dict[person]
answer.append(value)
return answer
'Algorithm > Programmers' 카테고리의 다른 글
프로그래머스 LV1 옹알이2 (0) | 2023.05.05 |
---|---|
프로그래머스 LV1 키패드 누르기 (0) | 2023.05.05 |
프로그래머스 LV1 체육복 (0) | 2023.05.05 |
프로그래머스 LV1 두 개 뽑아서 더하기 (0) | 2023.05.04 |
프로그래머스 LV1 덧칠하기 (0) | 2023.04.28 |