서론코드포스를 참가하다보면 라운드 중일 때에는 Accept 떠서 기분좋게 다른 문제 풀러 갔지만, 시스텟 돌 때 TLE가 터지는 경우가 어떤 자료구조를 사용하면 99% 있다. 이유는 바로 해시 저격 때문이다. 우리는 해시 맵의 조회, 삭제, 삽입 연산이 $O(1)$이라고 알고 그렇게 사용해왔다. 하지만 이는 평균 시간복잡도이지 최악의 경우 $O(1)$을 보장해주지 못하고 $O(n)$이 된다. 파이썬에서 해시를 사용하는 dict와 set은 물론이고 collections의 Counter와 defaultdict 역시 해시 저격에 안전하지 않다. 본론해시 저격이 가능한 이유는 해시 충돌이 생기기 때문이다.먼저 해시 충돌에 대해 설명해보자면,,, 해시는 임의의 데이터를 고정된 크기의 값으로 변환해주는 과정이다. ..