빈도 기반 맵/셋

맵·셋 갱신 기준

빈도 문제에서 가장 흔한 오답은 자료구조 선택보다 키를 어떻게 표준화하고, 증가·감소·삭제를 어느 시점에 처리하는지에서 나옵니다. 같은 문자라도 대소문자, 정렬, 중복 허용 정책이 다르면 완전히 다른 키가 됩니다.

01

키 우선 고정

문자열을 그대로 쓸지, 정렬할지, 소문자로 바꿀지, 좌표를 튜플로 묶을지 결정합니다.

key
02

갱신 규칙 분리

삽입, 감소, 0이 된 키 삭제를 같은 루프 안에서 명확히 처리해야 stale key가 남지 않습니다.

update
03

동률 처리를 적는다

최빈값, Top-K, 그룹화에서는 빈도가 같을 때 원래 순서나 사전순을 어떻게 둘지 정합니다.

tie
04

복잡도를 해시 연산 수로 본다

전체 반복 횟수와 키 생성 비용, 해시 충돌 가능성을 나누어 계산합니다.

cost
빈 문자열
키가 없을 때도 기본값이 안전해야 함 초기 map 조회와 max 갱신이 빈 입력에서 깨지지 않는지 확인합니다.
empty
동률 빈도
정렬 기준을 하나 더 둔다 같은 빈도의 원소가 여러 개일 때 출력 순서가 문제 조건과 맞아야 합니다.
tie
정규화
같다고 볼 입력을 같은 키로 만든다 애너그램은 정렬 문자열, 좌표는 문자열 결합보다 튜플이나 구조화 키가 안전합니다.
normalize

키 충돌 · 삭제 시점 · 자료구조 역할 점검

키 충돌 문자열 이어붙이기 키는 `1,23`과 `12,3` 같은 모호성을 만들 수 있습니다.
삭제 시점 카운트가 0인 키를 남길지 지울지 문제 조건에 맞춰 정합니다.
자료구조 역할 카운트가 필요하면 Map, 존재만 필요하면 Set으로 책임을 좁힙니다.

빈도 갱신 골격

const count = new Map();
for (const x of items) {
  const key = normalize(x);
  count.set(key, (count.get(key) ?? 0) + 1);
        overflow-wrap: break-word;
        word-break: keep-all;
      }