DEV

[Python] 추억 점수

찻잔속청개구리 2024. 8. 4. 22:22
반응형

인증사진(2024-08-04)

문제

사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["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 함수를 완성해주세요.

def solution(name, yearning, photo):
    # name : 인물
    # yearning : 인물의 점수
    # photo : 사진
    
    # 1. 사람과 점수릉 매핑하기 위해 딕셔너리 컴프리헨션을 이용해 name과 yearning을 맵핑한다.
    name_yearning_dict = {name[i] : yearning[i] for i in range(len(name))}
    
    # 2. 사진의 추억점수를 합한다.
    # 2.1. 먼저 빈 리스트 answer를 준비한다.
    answer = []
    # 2.2. photo에 여러 사진이 있고 여기서 사진하나를 꺼내기로 하자. 
    for one_photo in photo:
    # 2.3. 사진을 꺼내면 사진의 추억점수를 합할 것이다. (사전에 추억점수는 0으로 초기화)
        photo_score = 0
        for name_in_photo in one_photo: # name은 모든 사람의 이름을 포함하고, name_in_photo는 사진 속 인물을 하나하나 나타내려고 사용
            photo_score = photo_score + name_yearning_dict.get(name_in_photo, 0)
        answer.append(photo_score)
    # 2.4. append 함수를 써서 answer 리스트에 score를 추가해준다.
    
    return answer

 

추가공부

## 딕셔너리 컴프리헨션
# 과목
sub = ["Math", "Science", "English", "History"]
# 점수
sco = [90, 85, 88, 92]

# range로 sub의 수만큼 생성함. 이 수만큼 i가 반복하게 될 것임
# 반환할 값은 i 인덱스 수에 맞춰 sub : sco 형식이 됨
mapping = {sub[i] : sco[i] for i in range(len(sco))}

print(mapping)

=> {'Math': 90, 'Science': 85, 'English': 88, 'History': 92}

## get 메소드
# 키를 통해 값을 가져옴. get("key값")
candy_dict = {
    "딸기": 10,
    "초코": 5,
    "민트": 2
}
candy_count = candy_dict.get("딸기", "사탕 없음")
print(candy_count)

=> 10

반응형