Counter cases

반례 입력이 pop 조건을 검증한다

단조 구조는 작은 입력에서 불변식이 깨지면 큰 입력에서도 조용히 틀린다. 그래서 구현 전 네 가지 반례를 먼저 통과시킨다.

[2, 2, 2]

동점 처리

엄격 비교인지 비엄격 비교인지가 갈리는 입력이다.

실패 징후 같은 값이 너무 일찍 제거됨
고정 규칙 < / <= / >를 문제 문장으로 선택
i - k

윈도우 밖 인덱스

새 값을 처리하기 전에 만료 후보를 먼저 제거해야 한다.

실패 징후 창 밖 값이 최댓값으로 남음
고정 규칙 front 만료 제거를 첫 줄에 둠
(value, index)

값 대신 인덱스

거리, 기간, 창 크기가 답이면 값만 저장해서는 부족하다.

실패 징후 답 위치나 기간을 계산 못함
고정 규칙 후보에는 원래 인덱스를 저장
2n loop

원형 배열

한 바퀴 뒤의 값도 답 후보면 인덱스 나머지 처리가 필요하다.

실패 징후 끝 원소의 오른쪽 탐색이 끊김
고정 규칙 두 바퀴 순회와 push 범위를 분리

반례 기준: 동점, 만료, 인덱스, 원형을 통과해야 “각 원소가 한 번 들어오고 한 번 나간다”는 선형 시간 증명을 믿을 수 있다.