겹치는 구간마다 max를 다시 계산하지 않고, 다음 구간에도 쓸 후보만 유지하는 고급 최적화 문제입니다. 각 원소가 한 번 들어오고 나가 O(n)이 되는 구조를 익힙니다.
정수 리스트의 길이 k인 모든 연속 구간에 대해 최댓값을 반환하세요. 중첩 반복이나 매 구간의 max() 대신 인덱스를 저장하는 단조 감소 덱을 사용합니다. k는 1 이상이고 리스트 길이 이하입니다.
sliding_window_max(numbers, k)
시간 O(n), 공간 O(k)
실행하면 아래 순서대로 채점합니다. print() 출력도 이 순서대로 쌓입니다.
| # | 이름 | numbers | k | 기대값 |
|---|---|---|---|---|
| 1 | 대표 예제 | [1, 3, -1, -3, 5, 3, 6, 7] | 3 | [3, 3, 5, 5, 6, 7] |
| 2 | 감소 수열 | [9, 7, 5, 3] | 2 | [9, 7, 5] |
| 3 | 윈도 1 | [2, 1, 4] | 1 | [2, 1, 4] |
| 4 | 전체가 한 윈도 | [4, 1, 9, 2] | 4 | [9] |
| 5 | 최댓값 중복 | [2, 5, 5, 1] | 2 | [5, 5, 5] |
Python 표준 라이브러리는 사용할 수 있습니다. 함수 이름과 매개변수는 제시된 형태를 유지하세요.
코드를 작성하고 실행하면 5개의 테스트가 각각 표시됩니다.