해시맵(Hash Map)은 “키(key)”와 “값(value)”을 한 쌍으로 저장하고, **키를 해시 함수(hash function)**로 매핑해 내부 배열의 인덱스로 변환함으로써, 평균적으로 O(1) 시간 만에 값에 접근·삽입·삭제할 수 있는 자료구조입니다.
(key, value) 형식으로 저장됩니다.{ "apple": 3, "banana": 5 } 라는 해시맵은 "apple"이라는 키에 3이라는 값을, "banana"라는 키에 5라는 값을 연결합니다."apple" → hash("apple") % capacity → 저장소의 0~(capacity-1) 사이 인덱스로 매핑MapES6부터는 내장 객체 Map이 해시맵 역할을 합니다.
const map = new Map();map.set(key, value);map.get(key);map.delete(key);map.size아래는 정수 배열에서 각 숫자의 등장 빈도를 해시맵(Map)으로 계산한 뒤, 가장 많이 등장한 숫자를 찾는 예제입니다.
/**
* 배열에서 가장 자주 등장하는 숫자를 반환하는 함수
* @param {number[]} nums - 정수 배열
* @return {{value: number, count: number}} { value: 최빈값, count: 등장 횟수 }
*/
function mostFrequent(nums) {
const freqMap = new Map();
let maxCount = 0;
let maxValue = null;
// 1) 빈도 계산
for (const num of nums) {
const count = (freqMap.get(num) || 0) + 1;
freqMap.set(num, count);
// 최빈값 갱신
if (count > maxCount) {
maxCount = count;
maxValue = num;
}
}
return { value: maxValue, count: maxCount };
}
// 사용 예시
const data = [2, 3, 2, 5, 2, 3, 4];
const result = mostFrequent(data);
console.log(`가장 많이 등장한 값: ${result.value}, 횟수: ${result.count}`);
// 출력: 가장 많이 등장한 값: 2, 횟수: 3