알고리즘 Lv1. 추억 점수

추억 점수

프로그래머스 문제

문제 설명 이외에 제한 사항은 생략하였다. 필요한 부분은 언급하며 진행할텐데 모든 정보를 적을 필요는 없다고 판단하여 적지 않았다

문제 설명

사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 [“may”, “kein”, “kain”]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 [“kali”, “mari”, “don”, “tony”]이고 [“kali”, “mari”, “don”]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, “tony”는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다.

그리워하는 사람의 이름을 담은 문자열 배열 name, 각 사람별 그리움 점수를 담은 정수 배열 yearning, 각 사진에 찍힌 인물의 이름을 담은 이차원 문자열 배열 photo가 매개변수로 주어질 때, 사진들의 추억 점수를 photo에 주어진 순서대로 배열에 담아 return하는 solution 함수를 완성해주세요.

흐름 파악

흐름 파악을 위해 꼬리에 꼬리를 무는 방식으로 접근하려한다.

반환해야하는 값은 뭐야?

그리움 점수를 합하여서 반환하면돼.

그리움 점수는 어떻게 구해?

인물마다 그리움 점수가 주어져

시각화

주어진 정보

이름 그리움 점수
may 5
kein 10
kain 3
radi 1

추억점수-1.png

테스트 데이터

[
    ["may", "kein", "kain", "radi"],
    ["may", "kein", "brin", "deny"],
]

추억점수-2.png

Pseudo Code

그리움_dict = {이름:그리움_점수} 
for 사진 in 사진_리스트
    그리움_합 = sum([그리움_dict 에서 사진['이름'] 을 Key 로 조회한 그리움 점수])
    answer.append(그리움_합)

실제 코드

def solution(names, yearning, photos):
    answer = []
    yearn_dict = dict(map(lambda i, j: (i, j), names, yearning))

    for photo in photos:
        answer.append(sum([yearn_dict[name] for name in photo if name in yearn_dict]))

    return answer

알고리즘 Lv2. 과제 진행하기

과제 진행하기

실용주의 프로그래머 Topic 47

Topic 47 함께 일하기

NCloud LB & SourcePipeline 구축하기
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지