파이썬으로 문제를 풀다보면 in이라는 오퍼레이터를 굉장히 많이 사용하게 되는데, 주의해야할 경우가 있다.
뒤에 리스트가 오는지, 딕셔너리가 오는지에 따른 차이인데 당장 알아보도록 하자!
in + 리스트
- 리스트에 있는 원소 하나하나와 연산을 수행한다.
- 때문에 시간복잡도가 O(N)이다.
arr = [5, 4, 3, 2, 1] if 1 in arr: pass
- 1이 arr에 있는지 확인하기 위해서, arr을 전부 순회하게 된다.
in + 딕셔너리
- 해쉬로 값을 탐색하게 된다.
- 때문에 시간복잡도가 O(1)이다.
dic = {1: None, 2: None, 3: None} if 1 in dic: pass
- 1이 dic에 있는지 확인하기 위해서, dic을 전부 순회하지 않고 해싱하여 탐색한다.
- 참고로 set도 딕셔너리라서 in 뒤에 set 자료구조가 오게 되면 탐색 시, O(1)이라는 시간복잡도를 가진다.