해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조로, 빠른 속도로 탐색, 삽입, 삭제를 할 수 있다.
해시함수를 사용하여 특정 해시값을 알아내고 그 해시값을 인덱스로 변환하여 키 값과 데이터를 저장하는 자료구조이다.
서로 다른 키 값을 해시함수로 변환한 값이 동일한 경우를 **충돌(Collision)**이 발생했다고 한다.
해시 테이블에서는 충돌을 아래 방법으로 해결함.
해시 함수
각각의 Key값은 해시함수에 의해 고유한 index를 가지게 되어 바로 접근할 수 있으므로 평균 O(1)의 시간복잡도로 데이터를 조회할 수 있다. 하지만 데이터의 충돌이 발생한 경우 Chaining에 연결된 리스트들까지 검색을 해야 하므로 O(N)까지 시간복잡도가 증가할 수 있다
임의의 길이의 값을 **해시함수(Hash Function)**를 사용하여 고정된 크기의 값으로 변환하는 작업