자료구조를 공부하다 보면 HashSet과 HashMap은 데이터를 평균 O(1)의 시간복잡도로 탐색한다고 배운다.배열에서 데이터를 순서대로 찾으면 최악의 경우 모든 데이터를 확인해야 한다. 그런데 해시 자료구조는 데이터가 많아져도 어떻게 원하는 값을 빠르게 찾을 수 있을까?이 글에서는 코드조선의 Hash Set과 Hash Map 강의를 바탕으로 해시 함수, 해시 충돌, 선형 탐사, HashSet과 HashMap의 차이를 정리한다. 강의에서는 C 언어로 단순화한 해시 자료구조를 직접 구현하면서 동작 원리를 설명한다.1. 배열 탐색은 왜 느려질까?다음과 같은 문자열 배열이 있다고 가정한다.const char* names[] = { "Kim", "Lee", "Park", "Choi", ..