알고리즘/프로그래머스

[알고리즘 고득점 kit/해시] 완주하지 못한 선수

_jju 2026. 4. 28. 14:05

 

그냥 해시써서 차집합 구하면 되는 문제

 

def solution(participant, completion):
    pc_dict = {}
    
    for p in participant:
        pc_dict[p] = pc_dict.get(p, 0) + 1 # 없으면 0 + 1해서 value에 1 저장되고
# 있었다면 원래 값에 1더해져서 value에 저장됨
    for c in completion:
        pc_dict[c] = pc_dict.get(c, 0) - 1

    for k in pc_dict:
        if pc_dict[k] == 1:
            return k

이렇게 key-value 한개의 해시를 만들어서 value값을 직접 채우고 빼줘도 되고

from collections import Counter

def solution(participant, completion):
    p_dict = Counter(participant)
    c_dict = Counter(completion)
    result = p_dict - c_dict
    return(list(result)[0])

colllections의 Counter함수를 기억한다면

Counter함수에 리스트를 통째로 넣으면 알아서 개수 세서 해시맵으로 변환해주기에 이 녀석을 써서 두개의 해시맵을 만든 다음 차집합 구해서 풀 수도 있다.