파이썬 알고리즘 : 완주하지 못한 선수

탐색

2024년 3월 8일 알고리즘 문제풀이

문제

난이도

Lv.1

코드

1
2
3
4
5
6
7
8
9
10
11
12
def solution(participant, completion):
    arr = {}
    for runner in completion:
        if runner not in arr:
            arr[runner] = 1
        else:
            arr[runner] += 1
    for player in participant:
        if arr.get(player):
            arr[player] -= 1
        else:
            return player

n-1개의 참가자 목록을 길이가 n인 리스트에서 탐색할 때 최악의 경우 n*(n-1), O(n**2)의 수행시간이 걸린다. 길이가 n인 리스트에서 1개를 탐색할 때 최악의 경우 n만큼 반복해야 하기 때문. 하지만 dictionary에선 상수의 값이라 O(1)이 n번 소요된다. dictionary에서 in 연산자는 해당 key가 존재하는지 찾아주고 get은 value 값을 반환해준다.