1. 해시 테이블(Hash Table) 정의
-
정의:
- 해시 테이블은 키(Key)와 값(Value) 쌍으로 이루어진 데이터 구조입니다.
- 대량의 데이터를 빠르게 탐색하거나 저장하기 위해 사용됩니다.
-
특징:
- 일반적인 배열보다 더 많은 메모리를 사용.
- 키(Key)를 사용하여 값을 조회하기 때문에 빠른 탐색 속도를 제공합니다.
-
예시:
- 전화번호부:
- Key: 이름
- Value: 전화번호
- 이름(Key)을 통해 전화번호(Value)를 즉시 찾아냄.
2. 해시 함수(Hash Function)
- 역할:
- 데이터를 단순화하고 특정 위치로 변환하는 공식.
- 키(Key)를 숫자 등의 형태로 변환하여 해시 테이블의 인덱스를 결정.
- 특징:
- 데이터가 고르게 분산되도록 설계.
- 동일한 입력(Key)은 항상 동일한 출력(Index)을 반환.
- 필요성:
- 키 값을 효율적으로 저장하고, 탐색할 때 빠르게 조회.
3. 해시 테이블의 구성 요소
키(Key)
- 데이터의 고유 식별자.
- 예: 이름, ID, ISBN 번호 등.
값(Value)
- 키와 연결된 데이터.
- 예: 전화번호, 상품 정보 등.
해시 함수
- 키를 인덱스(주소)로 변환하는 함수.
- 충돌을 최소화하도록 설계.
4. Unreal Engine에서의 맵(Map)
- Unreal Engine에서 맵(Map) 변수는 해시 테이블과 유사하게 작동합니다.
- 구조:
- Key: 데이터의 고유 식별자 (예: 이름, ID 등).
- Value: 키와 연결된 데이터 (예: 전화번호, 객체 정보 등).
- 사용 방법:
- 블루프린트에서 변수 타입을
Map
으로 설정.
- Key와 Value의 데이터 타입을 선택.
- 예:
String
(Key)와 Integer
(Value).
5. 맵(Map)의 장점
- 빠른 탐색 속도:
- 효율적인 데이터 관리:
- 중복 키를 허용하지 않아 데이터 무결성 보장.
- 직관적인 데이터 연결:
- 키와 값의 쌍을 통해 직관적인 데이터 구조 제공.
6. 전화번호부 예시
설명
- 키(Key): 이름
- 값(Value): 전화번호
- 키를 통해 값에 접근:
Key
: "ho"
Value
: "010-214-1244"
구현 과정
-
Map 변수 설정:
Variable Type
을 Map
으로 변경.
- Key 타입:
String
.
- Value 타입:
String
.
-
데이터 추가:
- Key: "ho".
- Value: "010-214-1244".
-
데이터 조회:
7. 해시 테이블의 장단점
장점
- 탐색 속도: Key를 사용하여 값을 빠르게 조회.
- 유연성: 다양한 크기의 데이터 관리 가능.
- 중복 방지: 동일한 Key는 하나의 Value만 저장.
단점
- 메모리 사용량: 데이터 분산을 위해 많은 메모리를 사용.
- 충돌 관리 필요: 동일한 해시 값(Index)을 가지는 데이터가 발생할 수 있음.
- 복잡한 해시 함수 설계: 고르게 분산되도록 설계가 중요.
8. 활용 사례
- 전화번호부: 이름(Key) → 전화번호(Value).
- 게임 데이터 관리:
- 캐릭터 ID(Key) → 상태(Value).
- 아이템 ID(Key) → 속성(Value).