← 질문 목록
#213깊이 0
해시 충돌이 생기면 어떤 방법으로 푸는가?
자료구조 · 알고리즘기초
체이닝과 오픈 어드레싱으로 해결한다. 충돌이 발생한 데이터를 연결 리스트나 빈 공간으로 밀어내는 방식이다.
| 기준 | 체이닝 | 오픈 어드레싱 |
|---|---|---|
| 저장 방식 | 리스트로 연결 | 빈 슬롯으로 이동 |
| 공간 효율 | 추가 메모리 필요 | 기존 배열로 해결 |
| 삭제 연산 | 리스트에서 제거 | 삭제 마커 필요 |
체이닝은 버킷으로 리스트를 구현하여 데이터가 계속 늘어나도 수용 가능하다. 다만 리스트가 길어지면 탐색 시간이 O(1)에서 O(n)으로 늘어난다.
오픈 어드레싱은 빈 칸을 찾을 때까지 계속 탐색한다. 데이터가 꽉 찰수록 충돌이 잦아져 성능이 급격히 떨어진다. 이를 막기 위해 로드 팩터를 관리하고 리사이징을 수행한다.
추천 꼬리질문
관련 질문
- 해시 테이블의 평균 O(1)이 무너지는 경우는?자료구조 · 알고리즘해시 충돌 발생 시의 해결 방법은 해시 테이블의 연산 효율성이 저하되는 상황을 다루기 위한 필수 개념이다.
- 해시 충돌 발생 시 해결 방법은 무엇인가?자료구조 · 알고리즘두 질문 모두 해시 충돌 발생 시의 해결 방법이라는 동일한 개념을 다루고 있다.
- 해시 충돌을 해결하는 두 방식의 차이는 무엇인가?자료구조 · 알고리즘해시 충돌 해결 방법들의 구체적인 차이점을 다룸으로써 동일한 개념을 공유한다.
- 해시 충돌이 발생했을 때의 해결책은 무엇인가?자료구조 · 알고리즘해시 충돌 발생 시의 해결책을 묻는 질문으로 기준 질문과 동일한 개념을 다룬다.
- HashMap은 해시 충돌을 어떤 방식으로 처리하는가?언어 · 런타임HashMap의 충돌 처리는 일반 해시 충돌 해결법의 구체 사례다