키(key)를 통해 값을 빠르게 찾는 자료구조
O(1)O(1)👉 핵심: 탐색 없이 바로 접근 가능
const obj = {};
obj["apple"] = 3;
obj["banana"] = 5;
console.log(obj["apple"]); // 3
const map = new Map();
map.set("apple", 3);
map.set("banana", 5);
console.log(map.get("apple")); // 3
const set = new Set([1, 2, 3]);
set.has(2); // true
| 구분 | Object | Map |
|---|---|---|
| 키 타입 | 문자열/심볼만 | 모든 타입 |
| 순서 보장 | X | O |
| 사용성 | 간단 | 더 안정적 |
👉 코테에서는 Map 사용 추천
| 방식 | 시간복잡도 |
|---|---|
| includes | O(n) |
| Map / Set | O(1) |
👉 반복되면 시간초과 발생
const arr = ["a", "b", "a", "c", "a"];
const map = new Map();
for (let x of arr) {
map.set(x, (map.get(x) || 0) + 1);
}
const set = new Set(arr);
if (set.has("a")) {
// 존재함
}
const map = new Map();
map.set("철수", 90);
map.set("영희", 85);
map.get("철수"); // 90
arr.includes(x); // O(n)
👉 반복문 안에서 사용하면:
for (...) {
arr.includes(x); // ❌ O(n^2) → 시간초과
}
| 상황 | 자료구조 |
|---|---|
| 존재 여부 확인 | Set |
| 빈도수 / 카운팅 | Map |
| 값 저장 및 조회 | Map |
| 단순 1회 확인 | includes 가능 |
• 해시는 빠른 조회(O(1))를 위한 구조
• 코테에서는 Map / Set 활용이 핵심
• includes는 반복문 안에서 사용하면 위험
배열은 탐색, 해시는 즉시 조회