| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- Mini-React
- 해시
- c언어
- BFS
- 코딩
- 그래프
- 그리디
- 프로그래머스
- 백준
- HTML기초
- 팀프로젝트
- CSS
- frontend
- 코딩테스트
- Git
- react
- js
- 개발자
- Python
- 프론트엔드
- 크래프톤 정글
- javascript
- html
- DFS
- 정렬
- 프론트앤드
- 정글
- 혼자 공부해서 개발까지
- 알고리즘
- 알고리즘 기초
Archives
- Today
- Total
민혁이의 IT스토리
알고리즘 기초 - 해시 테이블 본문
헤시테이블이란?
- 키(key)와 값(value)을 짝지어 저장하는 자료구조
- 해시 함수(Hash Function)를 사용해 키를 특정 인덱스로 변환하여 값을 저장하고 검색
- 대표적으로 딕셔너리(Dictionary, Python), 맵(Map, Java), 객체(Object, JavaScript) 같은 자료형이 해시테이블 기반으로 동작
동작 원리
- 해시 함수(Hash Function) 적용
키 → 해시 함수 → 해시값(배열 인덱스) - 저장
배열의 해당 인덱스 위치에 값 저장 - 검색
동일한 키로 해시 함수 → 같은 인덱스 → 값 꺼냄
예시
# 파이썬 딕셔너리 = 해시테이블
hash_table = {}
hash_table["apple"] = 100
hash_table["banana"] = 200
print(hash_table["apple"]) # 100
del hash_table["banana"]
print(hash_table) # {'apple': 100}
장점과 단점
| 장점 | 단점 |
| - 평균적으로 검색, 삽입, 삭제 연산이 O(1)로 매우 빠름 | - 충돌(Collision) 발생 가능 (서로 다른 키가 같은 해시값을 가질 때) |
| - 키를 직접 저장하므로 탐색이 효율적임 | - 충돌 해결(체이닝/버킷 등)로 인해 공간 효율 낮음 |
| - 문자열, 숫자 등 다양한 자료형의 키 사용 가능 | - 해시 함수가 좋지 않으면 성능 저하 발생 |
충돌 해결방법
- 체이닝(Chaining)
같은 인덱스에 연결 리스트로 여러 값 저장 - 개방 주소법(Open Addressing)
충돌 시 다른 빈 공간 찾아 저장 (선형 탐사, 이차 탐사 등)
마무리
해시테이블은 빠른 탐색과 삽입을 보장하는 강력한 자료구조지만,
충돌 관리와 해시 함수 설계가 중요하다는 점을 꼭 기억해야 합니다.
'알고리즘' 카테고리의 다른 글
| 알고리즘 기초 - 깊이 우선 탐색(DFS) (0) | 2025.09.24 |
|---|---|
| 알고리즘 기초 - 그래프 종류/ 표현 방식 (0) | 2025.09.22 |
| 알고리즘 기초 - Linked List (0) | 2025.09.22 |
| 알고리즘 기초 - 큐 (0) | 2025.09.18 |
| 알고리즘 기초 - 스택 (0) | 2025.09.18 |