https://www.acmicpc.net/problem/2559
import sys
input = sys.stdin.readline
n, k = map(int,input().split())
temp_list = list(map(int,input().split()))
value = sum(temp_list[:k])
answer = value
for i in range(k,n):
value -= temp_list[i-k]
value += temp_list[i]
answer = max(answer,value)
print(answer)
이번 문제는 N일 동안 측정된 온도에서 연속 K일간 측정했을 때의 최댓값을 구하는 문제이다.
해당 문제는 단순히 완전탐색으로 풀게되면 O(N*K)의 시간복잡도가 나오게 되는데, N이 최대 10^5 이므로 시간초과가 발생하게 된다.
따라서 슬라이딩 윈도우를 활용하여 첫 K 길이의 온도의 합부터 마지막 온도까지 값을 구하면서 answer를 업데이트 해주었다.(시간복잡도 O(N))
'Algorithm 💡 > SlidingWindow' 카테고리의 다른 글
[백준 12891번] DNA 비밀번호 (0) | 2024.06.28 |
---|---|
[백준 2531번] 회전 초밥 (0) | 2024.06.28 |
[백준 21921번] 블로그 (0) | 2024.06.28 |
슬라이딩 윈도우(Sliding Window) 알고리즘 이란 ? (0) | 2024.06.28 |