반응형
📘 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)
슬라이딩 윈도우는 연속된 구간이 핵심일 때 최적화되는 알고리즘
중요 구현 포인트
처음 윈도우의 합을 미리 계산해두기
앞에서 하나 빼고, 뒤에서 하나 더하기 패턴
일반적인 누적합으로 푸는 것보다 시간복잡도, 메모리 모두 절약 가능
반응형
'Python > algorithm' 카테고리의 다른 글
쇠막대기 자르기 (0) | 2025.04.08 |
---|---|
TIL - 2025.03.28 (0) | 2025.04.07 |
DFS - 백준 2468번 :안전영역 (0) | 2025.04.03 |
바탕화면 정리 드래그 범위 계산 – 두 가지 풀이 (0) | 2025.04.02 |
피보나치 수열과 DP[백준 피보나치 비스무리한 수열] (0) | 2025.04.01 |