콘텐츠로 바로가기

Hash Table

키를 해시 함수로 변환하여 배열 인덱스에 매핑, 평균 O(1) 조회·삽입·삭제를 달성하는 자료구조.

sys.entry
M

Me

hyunyoun's Blog

data-structures-algorithms1 min read

Hash Table

키를 해시 함수로 변환하여 배열 인덱스에 매핑, 평균 O(1) 조회·삽입·삭제를 달성하는 자료구조.

핵심 메커니즘

CODE
key → hash(key) % capacity → bucket index
"name" → 1027364 % 16 → 3 → bucket[3]

해시 함수 요건: 결정론적, 균등 분포, 빠른 계산.

충돌 해결

Chaining: 버킷을 연결 리스트로. 최악 O(n), 로드 팩터 유연.

Open Addressing: 충돌 시 다음 빈 슬롯 탐색 (Linear/Quadratic/Double Hashing). 캐시 지역성 좋음.

CODE
로드 팩터 α = n / capacity
α > 0.75 → rehashing (capacity 2배 확장, 모든 원소 재삽입)

실무 함의

  • Python dict, Java HashMap의 내부 구현
  • 키가 가변 객체면 해시 충돌 보장 없음 → 불변 객체를 키로
  • 해시 충돌 공격: 악의적 입력으로 모두 같은 버킷 → O(n) 저하 → SipHash 같은 무작위화 해시 사용

연결 노트