flowchart TD
A[Initialize window state] --> B[Expand right pointer]
B --> C[Update frequency sum]
C --> D{Window violates constraint}
D -- Yes --> E[Shrink left pointer]
E --> C
D -- No --> F[Update best answer]
F --> G{More right positions}
G -- Yes --> B
G -- No --> H[Return best window result]
sequenceDiagram
participant R as right
participant L as left
participant W as window-state
loop iterate right
R->>W: add new element
alt invalid window
L->>W: remove old element
end
W-->>R: best metric update
end
# [Sliding Window 템플릿: 아키텍트 버전]# Use Case: 부분 배열/문자열의 최댓값/최솟값# Components: Window (Left, Right), HashMap (빈도)# Constraint: 연속된 구간만 가능defsliding_window_fixed(arr,k):# [고정 크기 윈도우]# 1. 초기화 (Initialization Layer)window_sum=sum(arr[:k])max_sum=window_sum# 2. 윈도우 이동 (Window Sliding)foriinrange(k,len(arr)):# 3. 업데이트 로직 (Update Logic)# - 새로운 원소 추가, 이전 원소 제거window_sum+=arr[i]-arr[i-k]max_sum=max(max_sum,window_sum)returnmax_sum