[프로그래머스] Lv.1 추억 점수 Python

콩이·2024년 1월 26일
0

코딩테스트 Python

목록 보기
5/13

📍 문제 설명

📍 풀이 point

1) photo에 있는 list별로 속해있는 요소 중 name에 있는 요소와 같은 항목이 있는지 체크하고, 있다면 해당하는 name의 인덱스 값을 idx에 저장한다.

2) yearning에서 name에 저장된 인덱스 값에 해당하는 값들을 더해준다.

3) 더해준 값을 result값에 append한다.

def solution(name, yearning, photo):
    result = []
    idx = []

    for i in range(len(photo)):
        idx.clear() 
        plus_year = 0
        
        for j in photo[i]:
            for k in range(len(name)):
                if name[k] == j :
                    idx.append(k) 
        for z in idx:
            plus_year += yearning[z]
        
        result.append(plus_year)
        
    return result

주의할 점은 photo가 이중리스트인데, 반복문으로 리스트를 하나 돌 때 마다 idx에 저장한 인덱스 값과 yearning에서 저장된 인덱스 값에 해당하는 값을 더해준 값들(plus_year)을 초기화 해주어야한다는 것이다.
(나는 이 부분이 헷갈려서 값을 계속 출력해보면서 했다.)

아래는 프로그래머스에서 참고한 다른 분들 답 중에서 내가 가장 이해하기 쉬웠던 코드를 가져와보았다.

def solution(name, yearning, photo):
    dictionary = dict(zip(name,yearning))
    scores = []
    for pt in photo:
        score = 0
        for p in pt:
            if p in dictionary:
                score += dictionary[p]
        scores.append(score)
    return scores

우선 name과 yearning을 딕셔너리 형태로 만들고, 딕셔너리 값과 photo list안의 값이 존재하면 딕셔너리에서 해당 key값에 맞는 value값을 score에 더해주는 방식을 이용했다.

if p in dictionary 

key값 추출 위해서는 keys(), values(), items()와 같은 것들을 이용하여야만 key값 추출이 가능한줄 알았지만 위 조건을 통해서도 key값만 검색될 수 있는지 새롭게 알게 되었다.

0개의 댓글