상세 컨텐츠

본문 제목

[프로그래머스] 해시 - 완주하지 못한 선수 (결과 포함)

개발 공부 (알고리즘)

by letprogramming 2021. 8. 18. 01:38

본문

반응형

참가자 리스트 participant와 완주자 리스트 completion이 입력으로 주어지고 완주하지 못한 선수를 출력하는 문제이다.

참가지 리스트에 있는 선수들 중에서 완주자 리스트에는 없는 선수를 찾으면 될 것 같지만 문제를 보면 동명이인이 존재할 수 있다.

 

동명이인을 처리하기 위해서 dictionary를 사용했다

 

처음에 모든 참가자에 대한 key를 생성하고 value를 0으로 초기화 한다.

그리고 참가자와 완주자 리스트를 합한 리스트를 순회하면서 해당하는 선수의 value를 1 증가시킨다.

 

그리고 이 딕셔너리에 저장된 value들 중에서 홀수를 찾는다.

 

만약에 동명이인이 아닌 A 선수가 완주를 했다면 딕셔너리에서 A의 value는 2일 것이다.

동명이인이라고 해도 모두 완주했다면 짝수를 값으로 가질 수 밖에 없다.

 

즉, 딕셔너리에서 값을 홀수로 가지는 키(선수)는 participant에는 존재하지만 completion에는 존재하지 않는 완주하지 못한 선수이다.

[소스 코드]

def solution(participant, completion):
    answer = ''
    data = participant + completion
    
    dic = {string: 0 for string in participant}
    for player in data:
        dic[player] += 1
    
    for key, val in dic.items():
        if val % 2 != 0:
            answer = key
            break
    return answer
반응형

관련글 더보기