Python/algorithm

슬라이딩 윈도우

baecode 2025. 4. 4. 16:06
반응형

📘 TIL - 백준 2559번: 수열 + 슬라이딩 윈도우 개념 정리

🔍 문제 개요

매일 측정한 온도를 정수 수열로 입력받고,
연속된 K일 간의 온도 합 중 최대값을 구하는 문제.


✅ 사용한 알고리즘: 슬라이딩 윈도우 (Sliding Window)

📌 개념 정리

  • 슬라이딩 윈도우는 고정된 길이의 연속된 범위를 이동시키며 조건을 만족하는 구간을 탐색하는 기법
  • 매번 구간을 슬라이스하거나 합을 새로 구하면 비효율적이기 때문에,
    앞 원소는 빼고, 뒤 원소는 더해서 빠르게 구간합을 갱신하는 방식

✨ 슬라이딩 윈도우 구현 예시 (K=3)

temps = [3, -2, -4, -9, 0, 3, 7, 13, 8, -3]
k = 3

# 첫 윈도우 합 계산
res = sum(temps[:k])
max_sum = res

# 윈도우를 한 칸씩 오른쪽으로 이동하며 갱신
for i in range(k, len(temps)):
    res = res - temps[i - k] + temps[i]
    max_sum = max(max_sum, res)

print(max_sum)



슬라이딩 윈도우는 연속된 구간이 핵심일 때 최적화되는 알고리즘

중요 구현 포인트

  • 처음 윈도우의 합을 미리 계산해두기

  • 앞에서 하나 빼고, 뒤에서 하나 더하기 패턴

일반적인 누적합으로 푸는 것보다 시간복잡도, 메모리 모두 절약 가능

반응형