본문 바로가기
Algorithm

[프로그래머스] 해시 - 완주하지 못한 선수(파이썬 문제풀이)

by j-y 2021. 3. 31.
반응형

문제 링크

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

간단하게 딕셔너리를 이용해 풀이를 해보았습니다.

 

파이썬에서는 딕셔너리로 해시 자료구조(키와 값을 쌍으로 갖는 자료구조)를 사용할 수 있습니다.

 

먼저 딕셔너리 변수를 하나 만들고, 참여자들의 수 만큼 +1 해주었습니다. 동명이인이 있을 수 있으므로 단순히 참여자가 있으면 1, 없으면 0으로 풀면 테스트 케이스 3번을 통과하지 못합니다.

마찬가지로 완주자를 for문으로 탐색하며 딕셔너리에서 -1을 해주면, 완주를 한 경우 딕셔너리에서 값이 0으로 되어있을 것이므로 0이 아닌 경우 리턴하도록 코드를 작성했습니다.

 

문제 풀이(파이썬)


def solution(participant, completion):
    chk = dict()
    for par in participant:
        chk[par] = chk.get(par, 0) + 1

    for com in completion:
        chk[com] = chk.get(com, 0) - 1

    for c, i in chk.items():
        if i != 0:
            return c
반응형

댓글