반응형
인증사진(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
반응형
'DEV' 카테고리의 다른 글
[python] 다음 큰 숫자 (0) | 2024.08.18 |
---|---|
[python] 뒤에 있는 큰 수 찾기 (0) | 2024.08.11 |
[python_study] 가장 가까운 같은 글자 (0) | 2024.07.28 |
[python_study] 중복된 숫자 개수 (0) | 2024.07.21 |
[python_study] 핸드폰 번호 가리기 (0) | 2024.07.07 |