티스토리 뷰
00. TL;DR
- 해시 테이블은 키를 해시 함수로 변환해 배열 인덱스에 저장하는 개념적 자료구조 입니다.
- 딕셔너리는 언어에서 제공하는 구현체로, 보통 해시 테이블을 기반으로 동작합니다.
01. 해시 테이블은 개념이다
01.01. 정의
- 해시 테이블(Hash Table)은 이론적인 자료구조로, 다음과 같은 방식으로 작동합니다:
- 키를 해시 함수로 숫자 인덱스로 변환
- 이 인덱스를 배열의 위치로 사용
- 해당 위치에 값을 저장하거나 검색
예시:
해시 함수("name") → 42
→ 배열[42] = "Kyungsoo"
01.02. 특성
- 키 기반으로 빠르게 값을 검색
- 평균적인 시간 복잡도: O(1)
- 충돌이 발생할 경우 체이닝 또는 오픈 어드레싱으로 처리
02. 딕셔너리는 구현체이다
02.01. 정의
- 딕셔너리(Dictionary)는 프로그래밍 언어에서 제공하는 키-값 저장 자료형
- 내부적으로 보통 해시 테이블을 사용하여 구현됨
02.02. 자바스크립트 예시
| 자료형 | 딕셔너리인가? | 내부 구조 |
|---|---|---|
Object |
✅ | 해시 테이블 |
Map |
✅ | 해시 테이블 |
WeakMap |
✅ | 해시 테이블 (key는 객체만) |
Set |
❌ (값만 저장) | 해시 테이블 기반 |
03. 해시 테이블 vs 딕셔너리
| 항목 | 해시 테이블 | 딕셔너리 |
|---|---|---|
| 개념 | 자료구조 (이론) | 구현체 (언어 제공) |
| 목적 | 빠른 검색과 저장 | 키-값 관리 |
| 구현 | 해시 함수 + 배열 + 충돌 처리 | 보통 해시 테이블을 기반으로 함 |
| 예시 | CS에서 학습용 자료구조 | Map, Object, HashMap, dict 등 |
04. 관계 요약
[자료구조 개념] 해시 테이블
↓ 구현
[프로그래밍 언어] 딕셔너리 타입 (Map, Object, HashMap 등)
Map은 딕셔너리이며, 내부적으로는 해시 테이블로 구현됨Set은 딕셔너리는 아니지만, 내부적으로 유사한 구조(해시 기반)를 사용TreeMap처럼 트리 기반 딕셔너리도 존재함 → 모든 딕셔너리가 해시 기반은 아님
05. 비유로 쉽게 이해하기
| 개념 | 비유 |
|---|---|
| 해시 테이블 | 냉장고라는 아이디어, 개념 |
| 딕셔너리 | 삼성 냉장고, LG 냉장고처럼 실제 제품 (구현체) |
'컴퓨터 과학' 카테고리의 다른 글
| 튜링 기계 (1) | 2025.04.09 |
|---|---|
| 컴퓨터는 왜 0과 1만 이해할까? (0) | 2025.04.03 |
| 괴델과 튜링 (0) | 2025.03.31 |
| 부울 논리 (0) | 2025.03.31 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 바이트 코드
- premitive
- prototype
- double-linked-list
- primitive
- bundler
- react
- vee-validate
- scoped slot
- 모노레포 스크립트
- react-router
- interning
- string
- JavaScript
- deep dive
- useasyncdata
- string table
- npm ci
- vue
- library mode
- ViTE
- TypeScript
- nuxt
- pakage-lock.json
- refrerence
- pnpm 명령어
- object literal
- JIT
- uselazyasyncdata
- webpack
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함
