루트는 현재 후보 중 가장 약한 빈도입니다.
빈도 맵 생성
입력을 한 번 순회해 `key -> count`를 만듭니다. 이때 비용은 `O(N)`, 공간은 고유 키 수 `U`만큼 필요합니다.
최소 힙에 push
`(count, key)`를 기준으로 넣으면 힙의 루트가 현재 후보 중 가장 약한 항목이 됩니다. 동점 정책은 이 시점에 고정합니다.
크기가 K를 넘으면 pop
힙 크기가 `k`를 넘는 순간 가장 작은 빈도를 제거합니다. 그래서 전체 후보를 모두 정렬하지 않아도 상위 후보만 남습니다.
결과를 기준대로 정렬
힙에서 꺼낸 후보는 표시용으로 다시 빈도 내림차순 정렬합니다. 최종 결과는 문제의 출력 정책과 동점 규칙을 따라야 합니다.