해시맵(Hash Map)은 “키(key)”와 “값(value)”을 한 쌍으로 저장하고, **키를 해시 함수(hash function)**로 매핑해 내부 배열의 인덱스로 변환함으로써, 평균적으로 O(1) 시간 만에 값에 접근·삽입·삭제할 수 있는 자료구조입니다.


해시맵의 핵심 개념

  1. 키와 값의 쌍
  2. 해시 함수 (Hash Function)
  3. 버킷과 충돌 처리
  4. 시간 복잡도
  5. 사용 예시

자바스크립트에서의 해시맵: Map

ES6부터는 내장 객체 Map이 해시맵 역할을 합니다.


완성된 예제 코드

아래는 정수 배열에서 각 숫자의 등장 빈도를 해시맵(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