Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- useoutletcontext
- Helmet
- H-index
- 프로그래머스
- 138476
- userecoilvalue
- 티스토리챌린지
- 노마드코더
- programmers
- Typescript
- Recoil
- 귤 고르기
- Outlet
- React
- usesetrecoilstate
- 오블완
- 42747
Archives
- Today
- Total
오늘도 코딩하나
[자료구조] 해시(Hash)_Javascript 본문
✅ 아래 해시에 대한 설명은 자바스크립트를 기반으로 합니다.
해시 (Hash)
- key : value 자료구조
- 전화번호 같은거라고 생각하면 됨
해시 사용
- 빠른 검색과 key : value 쌍 저장을 지원하는 자료구조
1️⃣ Map
- 순서 보장 : 삽입된 순서대로 순회 가능
- 모든 데이터 타입을 키로 사용 가능
- 빠른 검색 성능을 제공
- 중복된 키는 덮어쓰기 가능
2️⃣ Object
- 문자열 또는 심볼만 키로 사용 가능
- 프로토타입 상속이 포함됨
- 성능 : Map보다 약간 떨어질 수 있음
- 중복된 키는 덮어쓰기 가능
3️⃣ Set
- 중복 없는 값만 저장
- 값에 대한 검색과 추가가 효율적
- 순서 보장 : 삽입 순서대로 값 순회 가능
특성 | Map | Object | Set |
저장 형식 | 키-값 쌍 (key-value pairs) | 키-값 쌍 (key-value pairs) | 값만 저장 (values only) |
키에 사용 가능한 타입 | 모든 데이터 타입 (문자, 숫자, 객체 등) |
문자열 또는 심볼만 사용 가능 | 모든 데이터 타입 (중복되지 않는 값만) |
중복된 값 허용 여부 | 허용하지 않음 (키는 유일해야 함) |
허용하지 않음 (키는 유일해야 함) | 허용하지 않음 (값은 중복 불가) |
중복된 키 처리 | 덮어쓰기(같은 키에 값을 다시 설정 시 덮어씀) | 덮어쓰기 (같은 키에 값을 다시 설정 시 덮어씀) | 해당 없음 (값만 저장하며 키가 없음) |
순서 보장 | 삽입 순서 보장 | 일부 순서 보장 (문자열 키에 대해서는 삽입 순서 보장) | 삽입 순서 보장 (값의 순서 보장) |
기본 메서드 | set(), get(), has(), delete() 등 | obj[key], hasOwnProperty(), Object.keys() 등 | add(), delete(), has() 등 |
성능 | 빠른 성능 (대규모 데이터셋에서 유리) |
상대적으로 느림 (대규모 데이터셋에서 성능 저하 가능) | 빠른 성능 (유일한 값 처리 시 유리) |
순회 방식 | map.entries() map.keys() map.values() |
for...in Object.keys() Object.entries() |
for...of set.values() set.entries() |
기타 특징 | 효율적인 해시 기반 자료구조로서 삽입/삭제/조회 성능이 우수 | 기본적인 객체로 사용되며, 속성 추가/삭제/조회가 가능 |
값만 저장하며, 중복 제거와 순서가 중요한 경우 유용 |
❓ Set은 왜 해시 자료구조에 포함되는거지?
Hash는 key : value 자료구조라고 정의하는데 Set은 key값 없이 value값만으로 데이터를 관리한다.
그럼 어떻게 해시 자료구조라 할 수 있는것이지? 하는 의문이 들었다.
▶ Set은 해시 테이블의 전형적인 key : value 저장 방식과는 다르지만, 값의 유일성을 보장하기 위해 해시 방식을 사용 할 수 있다는 점에서 해시 기반 자료구조로 간주할 수 있다.
각 자료구조의 사용 케이스
자료구조 | 사용 상황 | 예시 |
Map | - 키-값 쌍을 저장할 때 - 다양한 키 타입을 사용해야 할 때 - 삽입 순서가 중요할 때 |
- 설정 값 저장 - 각종 매핑 정보 저장 |
Object | - 고정된 키로 데이터를 표현할 때 - 키가 문자열이나 심볼일 때 - 속성 접근 시 |
- 사용자 정보 저장 - JSON 데이터 구조 처리 |
Set | - 중복 제거가 필요할 때 - 값만 저장할 때 - 순서대로 처리할 때 |
- 고유한 값 목록 저장 - 중복 요소 제거 |
* Map은 복잡한 데이터 구조나 순서가 중요한 경우
* Object는 간단한 데이터 저장과 구조적 작업
▶ 프로그래머스 문제 풀이 하러 가기
https://school.programmers.co.kr/learn/courses/30/parts/12077
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'ALGORITHM' 카테고리의 다른 글
우선순위 큐(Priority Queue)와 힙(Heap) (0) | 2025.01.02 |
---|