Lv.1 추억 점수

김다은·2023년 11월 13일
0

코딩테스트

목록 보기
8/8

문제 설명 & 제한 사항

입출력 예

문제 해결 방법

  • 인물과 그리움 점수를 매핑한 딕셔너리 생성
  • 각 사진에 대한 추억 점수 계산을 위한 answer 리스트 초기화
  • for문으로 인물이 딕셔너리에 있을 경우 점수 추가
  • 각 사진의 추억 점수를 결과 리스트에 추가하여 반환
def solution(name, yearning, photo):
    answer = []
    pic_score = dict(zip(name, yearning))
    
    for list in photo:  # ["may", "kein", "kain", "radi"]
        photo_score = 0	# 점수 초기화
        for pic in list:    # "may"
            if pic in pic_score:
                photo_score += pic_score[pic]
        answer.append(photo_score)
            
    return answer

이 문제를 풀때 자꾸 틀렸다고 나와서 당황했었다. 흐름을 봤을땐 뭐가 틀렸나했는데
틀린 코드:

def solution(name, yearning, photo):
    answer = []
    photo_score = 0
    pic_score = dict(zip(name, yearning))
    
    for list in photo:  # ["may", "kein", "kain", "radi"]
        # photo_score = 0
        for pic in list:    #"may"
            if pic in pic_score:
                photo_score += pic_score[pic]
        answer.append(photo_score)
            
    return answer

photo_score를 각 사진마다 초기화하지 않아서 값이 점점 커지는 문제가 생겼다. 한참을 보다가 결국 디버깅으로 해결하였다.

다른 사람들은 몇줄로 바로 풀던데 나도 공부를 위해 일단 여기에 넣어둬야겠다.

pic_score = dict(zip(name, yearning))
answer = [sum(pic_score[pic] for pic in pic_list if pic in pic_score) for pic_list in photo]

list comprehension을 이렇게도 이용할 수 있다는 것을 배웠다

zip()/dict()함수 자문자답

  • zip()함수가 무엇인가
    • 여러 개의 순회 가능한 객체를 받아 각 객체의 원소들을 순서대로 튜플로 묶어주는 파이썬 내장 함수
names = ["Alice", "Bob", "Charlie"]
scores = [90, 85, 95]

zipped_data = zip(names, scores)
print(list(zipped_data))

# 출력 결과
[('Alice', 90), ('Bob', 85), ('Charlie', 95)]
  • dict()는 무엇인가
    • 파이썬에서 제공하는 내장 함수로 사전을 생성하는 데 사용됨
  • zip함수로 닥셔너리를 어떻게 활용하는지
    • 여러 개의 리스트를 편리하게 딕셔너리로 변환할 때 사용
    • zip() 함수를 사용하여 두 개의 리스트를 묶은 후 dict()를 통해 딕셔너리로 변환할 수 있음
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 22]

name_age_dict = dict(zip(names, ages))
print(name_age_dict)

# 출력 결과
{'Alice': 25, 'Bob': 30, 'Charlie': 22}

느낀점

어이없는 실수로 문제에 꽤 오랜 시간을 할애했느데 가치가 있는 실수였다고 생각한다. 그리고 이 문제를 통해 간만에 내장함수를 공부하고 정리할 수 있었다. 이렇게 공부하고 정리하여 완전히 나의 것으로 만들기 위해 블로깅 이후에도 한 번씩 읽는게 좋겠다! 내 블로그가 다른 사람들에게도 도움이 되었으면 좋겠다!

profile
이제는 더이상 물러날 곳이 없다

0개의 댓글