Python/Programmers

Lv.1-마라톤

JAEJUNG 2021. 7. 7. 00:52

문제

단 한명의 마라톤 참가자만 완주하지 못했다.

Participant와 Completion의 배열이 주어질 때 완주하지 못한 사람을 찾아라.

 

내 코드

def solution(participant, completion):
    d = dict()
    answer = ''
    for i in range(len(participant)):
        if participant[i] not in d:
            d[participant[i]]=1
        else:
            d[participant[i]]+=1

    for i in range(len(completion)):
        if completion[i] in d:
            d[completion[i]]-=1

    for k in d.keys():
        if d[k] > 0:
            return k

 

문제 풀이

Python의 Dictionary를 활용하여 participant의 참가자를 key-value 형태로 등록한 후

completion과 비교하여 value를 하나씩 가감한다.

후에 1이 남는 참가자를 return 한다.

 

고수 풀이

Counter 함수를 통해 key-value를 count하고 dictionary를 뺌으로써 value가 1인 key만 남게 된다.

import collections

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

'Python > Programmers' 카테고리의 다른 글

Lv.1-음양 더하기  (0) 2021.07.07
Lv.1-소수 찾기  (0) 2021.07.07
Lv.1-K번째 숫자 꺼내기  (0) 2021.07.07
Lv.1-신규 아이디 추천  (0) 2021.07.07
Lv.1-폰켓몬  (0) 2021.07.07