[Python] 프로그래머스. 완주하지 못한 선수

Coding Test

목록 보기
16/17
post-thumbnail

문제 링크

1️⃣ 내 풀이

정렬을 활용하여 풀었다. O(nlogn)

def solution(participant, completion):
    participant.sort()
    completion.sort()
    
    for i in range(len(completion)):
        if participant[i] != completion[i]:
            return participant[i]
    return participant[-1]

'해시' 카테고리의 문제이기 때문에 딕셔너리를 사용해서 다시 풀었다. O(n)

from collections import defaultdict

def solution(participant, completion):
    d = defaultdict(int)
    for item in participant:
        d[item] += 1
    
    for item in completion:
        d[item] -= 1
    
    for item in d:
        if d.get(item):
            return item

2️⃣ 최적 풀이

  • Counter를 활용한 풀이이다.
from collections import Counter

def solution(participant, completion):
    return list(Counter(participant) - Counter(completion))[0]

참고) 다음과 같은 것들을 print해보았다.

print(Counter(participant) - Counter(completion))
print(list(Counter(participant) - Counter(completion)))

profile
학습 메모장 : 코테 및 알고리즘, 언어 문법, Java 기본 강의...

0개의 댓글