CS 기초 · 중급
HashMap의 동작 원리와 해시 충돌 해결 방법에 대해 설명해주세요.
힌트 · 체이닝, 오픈 어드레싱 방식을 설명해보세요.
해시 함수버킷체이닝개방 주소법로드 팩터
모범답안
HashMap은 키-값 쌍을 저장하는 자료구조로, 빠른 검색 속도를 제공합니다. 동작 원리는 다음과 같습니다.
- 해시 함수: 키를 해시 함수에 넣어 배열의 인덱스(버킷)를 얻습니다.
- 저장: 해당 인덱스에 키-값 쌍을 저장합니다.
문제는 서로 다른 키가 같은 인덱스를 가리키는 해시 충돌이 발생할 수 있다는 점입니다. 이를 해결하는 방법은 크게 두 가지입니다.
- 체이닝(Chaining): 각 버킷을 연결 리스트로 만들어, 같은 인덱스에 여러 키-값 쌍을 저장합니다. 검색 시에는 해당 연결 리스트를 순회합니다.
- 개방 주소법(Open Addressing): 충돌이 발생하면, 다른 빈 버킷을 찾아 저장합니다. 선형 탐사, 이차 탐사, 이중 해싱 등의 방법이 있습니다.
HashMap의 성능은 해시 함수의 품질과 로드 팩터(데이터 개수 / 버킷 개수)에 따라 달라집니다. 로드 팩터가 높아지면 충돌 가능성이 커져 성능이 저하될 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 자료구조 면접 질문
- 재귀(Recursion)와 반복(Iteration)의 차이점과 변환 방법에 대해 설명해주세요.
- 이중 연결 리스트(Doubly Linked List)의 특징과 단일 연결 리스트와의 차이점은?
- 동적 배열(Dynamic Array)은 내부적으로 어떻게 크기를 늘리며, 이 과정에서 발생하는 비용을 어떻게 평가하나요?
- 이진 탐색 트리(BST)의 특징과 시간 복잡도에 대해 설명해주세요.
- 힙(Heap) 자료구조의 특징과 힙 정렬(Heap Sort)의 동작 원리를 설명해주세요.
- 그래프(Graph)의 표현 방법(인접 행렬, 인접 리스트)과 각각의 장단점을 설명해주세요.