데브허브 | DEVHUB | [취업을 위한 CS 지식] 24강. 해시 테이블[취업을 위한 CS 지식] 24강. 해시 테이블
- 해시 테이블은 키-값 쌍으로 데이터를 저장하며, 해시 함수를 통해 키를 버킷 인덱스로 변환하여 빠른 데이터 접근을 가능하게 하는 자료구조입니다. 🔑
- 해시 함수는 임의 길이의 데이터를 고정 길이의 해시 값으로 변환하는 단방향 함수로, 입력의 미세한 변화에도 해시 값이 크게 달라지는 특성을 가집니다. 🔄
- 해시 함수는 데이터 무결성 검증 및 비밀번호 저장과 같은 단방향 암호화에 활용되어 정보 보안을 강화하는 데 중요한 역할을 합니다. 🔐
- 해시 테이블의 가장 큰 장점은 해시 충돌이 없는 이상적인 상황에서 데이터 검색, 삽입, 삭제 연산이 상수 시간 복잡도(O(1))로 매우 빠르다는 것입니다. 🚀
- 로드 팩터는 해시 테이블의 데이터 밀도를 나타내는 지표로, 값이 높을수록 해시 충돌 발생 가능성이 증가하여 성능 저하를 초래할 수 있습니다. 📈
- 해시 충돌은 서로 다른 키가 동일한 해시 값으로 매핑되는 현상으로, 해시 테이블의 성능 저하와 보안 취약점의 주요 원인이 됩니다. 💥
- 해시 충돌 해결 방법 중 하나인 체이닝은 충돌이 발생한 버킷에 연결 리스트를 사용하여 여러 데이터를 저장하는 방식입니다. ⛓️
- 개방 주소법은 충돌 시 다른 빈 버킷을 찾아 데이터를 저장하는 방식으로, 선형 조사법, 2차 조사법, 이중 해싱 등의 세부 기법이 있습니다. 📍
- 선형 조사법은 데이터가 특정 영역에 집중되는 군집화(클러스터링) 문제를 발생시켜 탐색 효율을 떨어뜨릴 수 있습니다. 🏘️
- 이중 해싱은 두 개의 해시 함수를 사용하여 군집화 현상을 효과적으로 완화하지만, 해시 함수 연산이 두 번 필요하여 약간의 성능 오버헤드가 발생할 수 있습니다. ✌️
- 해시 테이블은 빠른 속도를 제공하지만, 상대적으로 많은 메모리 공간을 소모하며, 효율적인 충돌 관리가 전체 성능에 결정적인 영향을 미칩니다. 💾