CS 기초 · 기초
해시 테이블(Hash Table) 자료구조는 무엇이며, 해싱(Hashing)의 기본 원리와 충돌(Collision)이 발생했을 때 해결하는 일반적인 방법 두 가지를 설명해주세요.
힌트 · 해시 테이블은 키-값 쌍을 해시 함수로 매핑하여 저장합니다. 체이닝과 개방 주소법이 대표적인 충돌 해결 방법입니다.
해시 함수키(Key)충돌(Collision)체이닝(Chaining)개방 주소법(Open Addressing)
모범답안
해시 테이블은 키(Key)와 값(Value)을 저장하는 자료구조로, 키를 해시 함수를 통해 배열의 인덱스로 변환하여 데이터를 빠르게 저장하고 검색할 수 있게 해줍니다. 해싱은 이 해시 함수를 이용해 키를 고정된 크기의 해시 값으로 변환하는 과정입니다.
하지만 서로 다른 키가 같은 해시 값을 가질 수 있는데, 이를 충돌(Collision)이라고 합니다. 충돌을 해결하는 대표적인 방법 두 가지는 다음과 같습니다.
첫째, 체이닝(Chaining)입니다. 각 배열의 인덱스마다 연결 리스트와 같은 별도의 자료구조를 두어, 같은 해시 값을 가진 데이터들을 연결 리스트에 저장하는 방식입니다.
둘째, 개방 주소법(Open Addressing)입니다. 충돌이 발생했을 때, 비어있는 다른 인덱스를 찾아 데이터를 저장하는 방식입니다. 이때 탐사(Probing)라는 과정을 통해 다음 저장될 위치를 결정합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 알고리즘 면접 질문
- 이진 탐색(Binary Search) 알고리즘은 어떻게 동작하며, 이 알고리즘을 사용하기 위한 데이터의 전제 조건은 무엇인가요? 시간 복잡도는 어떻게 되나요?
- 버블 정렬(Bubble Sort) 알고리즘의 동작 원리를 설명하고, 이 알고리즘의 시간 복잡도와 실제 시스템 개발에서 잘 사용되지 않는 이유를 함께 설명해주세요.
- 재귀 함수(Recursive Function)는 무엇이며, 재귀 함수를 작성할 때 반드시 고려해야 할 두 가지 중요한 요소는 무엇인가요?
- 퀵 정렬(Quick Sort)과 병합 정렬(Merge Sort)의 동작 원리를 비교하고, 각각 어떤 상황에서 더 효율적인지 시간 복잡도와 공간 복잡도 측면에서 설명해주세요.
- 특정 네트워크에서 최단 경로를 찾아야 할 때 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS) 중 어떤 알고리즘을 선택해야 하며, 그 이유는 무엇인지 설명해주세요.
- 동적 계획법(Dynamic Programming)이 그리디(Greedy) 알고리즘과 어떻게 다른지 설명하고, 두 알고리즘이 각각 어떤 문제 유형에 주로 적용되는지 구체적인 예시를 들어주세요.