해시 테이블 (Hash Table)
-
정의:
- 대량의 데이터를 효율적으로 관리하고 빠르게 탐색하기 위한 자료구조.
- 데이터를 Key-Value 쌍으로 관리.
-
특징:
- Key를 통해 데이터를 바로 검색하므로 빠른 조회 속도를 제공.
- 일반적인 배열보다 많은 메모리를 사용.
- 데이터를 배열처럼 인덱스 기반이 아닌, Key를 기준으로 저장.
-
비유:
- 전화번호부에서 이름(Key)을 검색하여 전화번호(Value)를 찾는 방식.
맵(Map)의 개념 및 블루프린트에서의 구현
-
맵(Map)의 정의:
- 맵은 블루프린트에서 Key와 Value를 한 쌍으로 가지는 자료구조.
- Key는 고유해야 하며, 중복될 수 없음.
-
맵 생성 및 설정:
- Key와 Value의 타입을 설정 가능.
- 예: Key -
Integer
, Value - String
.
맵 관련 주요 기능
-
ADD:
- 새로운 Key-Value 쌍을 추가.
- Key가 중복될 경우 기존 값을 덮어씀.
-
REMOVE:
- 특정 Key에 해당하는 데이터를 삭제.
- 성공적으로 삭제 시
True
반환.
-
FIND:
- Key를 이용하여 데이터를 검색.
- 검색 결과가 존재하면 해당 Value를 반환하며,
True
를 반환.
-
CLEAR:
-
IS EMPTY / IS NOT EMPTY:
- 맵이 비었는지 확인.
- 비었으면
True
, 아니면 False
.
-
LENGTH:
- 맵에 저장된 Key-Value 쌍의 개수를 반환.
-
KEYS, VALUES:
- KEYS: 모든 Key를 배열로 반환.
- VALUES: 모든 Value를 배열로 반환.
Contains와 Find의 차이
-
Contains:
- Key가 맵에 존재하는지 여부만 반환 (
True
/ False
).
- 값을 반환하지 않음.
- 주로 조건문(Branch)과 함께 사용.
-
Find:
- Key가 존재할 경우 해당 Value를 반환.
- 값을 확인하는 동시에 데이터 검색에 적합.
데미지 합산기 구현
-
개요:
- 특정 캐릭터의 이름(Key)을 기반으로 데미지(Value)를 관리.
- 이미 존재하는 Key에 추가 데미지를 합산.
-
Contains 기반:
- Key가 존재하는지 확인.
- 존재하지 않으면 새로운 Key-Value 추가.
- 존재하면 기존 Value에 데미지를 합산.
-
Find 기반:
- Key를 검색하여 Value를 가져옴.
- Value를 수정 후 업데이트.
맵 활용의 장점
- 데이터를 Key로 직접 접근하므로 속도가 빠름.
- 구조적으로 명확하며, 데이터 관리가 용이.
맵의 한계
- Key가 고유해야 하며, 중복된 데이터를 Key로 저장 불가.
- 메모리 사용량이 배열에 비해 높음.