Top-K 경계

Top-K는 경계값 유지와 출력 정렬을 분리한다

Top-K의 핵심은 모든 값을 정렬하지 않고 현재 K개 후보의 경계만 유지하는 것입니다. 출력 요구가 정렬인지도 따로 확인해야 합니다.

크기 K

최소 힙 루트를 경계로 사용

상위 K를 유지할 때 루트보다 작은 값은 버리고 큰 값만 교체해 메모리를 줄입니다.

스트림

전역과 윈도우를 분리

누적 Top-K인지, 일정 구간마다 다시 계산하는지에 따라 stale 처리와 상태 초기화가 달라집니다.

동점

보조 키를 tuple에 넣는다

점수가 같을 때 사용자 ID, 시각, 입력 순서 중 어떤 기준을 따를지 비교 키로 고정합니다.

Top-K 제출 전 점검

K 확인k=0, k가 입력보다 큰 경우, 동점 다수 케이스를 먼저 테스트합니다.
메모리힙 크기가 K를 넘지 않는지, 윈도우 상태가 누적되지 않는지 확인합니다.
출력결과를 정렬해서 보여줘야 한다면 마지막 정렬 비용을 별도로 계산합니다.