줄기세포

[Python 3]코딩테스트 - 해시 - 완주하지 못한 선수(프로그래머스) 본문

프로그래머스 코딩테스트

[Python 3]코딩테스트 - 해시 - 완주하지 못한 선수(프로그래머스)

줄기세포(Stem_Cell) 2020. 10. 18. 01:31

참가자의 이름이 담긴 list와 완주자 이르이 담긴 list가 있습니다.

두 개를 각각 dictionary로 담아 { key : value }를 { 이름 : 중복 이름 수 } 로 담아줍니다.

처음 if문은 완주자 이름에 없는 사람을 바로 골라낼 수 있습니다. answer은 key값이 됩니다.

두 번째 elif문은 value값이 일치하지 않으면, 즉 동명이인이 있는데, 완주자에 한명만 있으면 answer이 됩니다.

def solution(participant, completion):
    answer = ''
    participant_count = dict()
    completion_count = dict()

    ## participant completion을 dictionary로 만들기
    for player in participant:
        if player not in participant_count.keys():
            participant_count[player] = 1
        else:
            participant_count[player] += 1

    for player in completion:
        if player not in completion_count.keys():
            completion_count[player] = 1
        else:
            completion_count[player] += 1

    ## dictionary를 이용해 판단 알고리즘 만들기
    for key, value in participant_count.items():
        if key not in completion_count.keys():
            answer = key
        elif participant_count[key] != completion_count[key]:
            answer = key
        else:
            pass
    return answer

아래는 collection의 counter 함수를 활용한 좋은 풀이를 한 코드가 있어서 가져왔습니다.

import collections


def solution(participant, completion):
    answer = collections.Counter(participant) - collections.Counter(completion)
    return list(answer.keys())[0]
Comments