https://school.programmers.co.kr/learn/courses/30/lessons/42576
두 배열이 주어질 때, 완주하지 못한 선수의 이름을 return 해라.
단, 동명이인이 존재할 수 있다.
ex) 두 명이 같은 이름인데, 완주자 명단에 한 명만 있으면 한 명은 완주를 하지 못한 것이다.
cf) completion 배열의 길이는 participant 보다 1 작다. 즉, 완주를 하지 못한 사람은 항상 1명이다.
def solution(participant, completion):
    answer = ''
    
    p = list(set(participant))      # 참가자 배열을 set 연산하여 배열 p에 저장 (동명 이인이 있을 수 있으므로 set 연산을 통해 중복되지 않은 이름만 저장)
    
    hash = {}
    for i in p:     # hash를 만들어서 {"참가자 이름" : 0} 형태로 저장
        hash[i] = 0
    
    for i in participant:   # 참가자의 수만큼 hash 값을 갱신(1씩 추가, 동명이인인 경우 해시 값이 2 이상으로 표기됨)
        hash[i] += 1
    
    for i in completion:    # 완주한 참가자들의 해시 값을 1씩 감소시킴
        hash[i] -= 1
    
    for i in hash:      # 최종적으로 해시 값이 1인 참가자를 return (완주 못한 참가자임)
        if hash[i] == 1:
            return i딕셔너리를 조금 다른 방법으로 선언 후 value 값을 지정했다.
import collections
def solution(participant, completion):
    
    hash = collections.defaultdict(int)
    for p in participant:
        hash[p] += 1
    
    for c in completion:
        hash[c] -= 1
    
    for val in hash:
        if hash[val] == 1:
            return val👏 해시 문제를 마스터하자!