CS/Algorithm

해시> 완주하지 못한 선수

KJY 2021. 3. 28. 20:52

문제

https://programmers.co.kr/learn/courses/30/lessons/42576?language=python3

풀이

def solution(participant, completion):
    part_dict = {}
    for person in participant:
        part_dict.setdefault(person, 0)
        part_dict[person] += 1

    for comp in completion:
        part_dict[comp] -= 1

    for person, count in part_dict.items():
        if count > 0:
            return person

속도

  • min : 통과 (0.01ms, 10.2MB)
  • max : 통과 (56.62ms, 33.9MB)

다른 풀이

import collections

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

collections.Counter → 개수까지 새서 딕셔너리로 반환해줌.

  • 속도
    • min : 통과 (0.05ms, 10.2MB)
    • max : 통과 (93.05ms, 39MB)

간단하긴 한데 빠르지는 않은듯 하다.