보물창고 블로그

프로그래머스 완주하지 못한 선수 풀이 With Python 본문

알고리즘 풀이/프로그래머스

프로그래머스 완주하지 못한 선수 풀이 With Python

홋 메 2022. 2. 12. 20:37
728x90

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42576

 

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

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

programmers.co.kr

해시(HASH) 관련 문제입니다. 저는 파이썬 자료구조인 Dictionary를 사용하여 풀이하였습니다.

풀이 코드는 아래와 같습니다.

def solution(participant, completion):
    answer = ''
    #참가자와 숫자를 key,value로 담을 Dictionary 선언
    partdict = {}
    for p in participant:
        if p not in partdict:
            partdict[p] =1
        else:
            partdict[p]+=1
    for c in completion:
        partdict[c]-=1
    for p in partdict:
        if partdict[p] == 1:
            return p

partdict에 참가자 이름을 key, 숫자 값을 value로 하여 동명이인도 체크합니다.

마지막에 완주하지 못한 사람은 partdict에 값이 1로 남아있을 것이므로 for문을 통해 완주하지 못한 사람을 찾습니다.

더 짧은 풀이는 아래와 같습니다.

import collections

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

collections 모듈의 Couter를 사용한 풀이입니다.  마찬가지로 마지막에 남은 answer 딕셔너리의 첫 번째 값을 반환합니다. 소스코드에 대한 질문이 있으시면 댓글 남겨주시면 답변드리겠습니다. :-)

Comments