Problem Solving/항해99
99클럽 코테 스터디 5일차 TIL + 투 포인터
wrathlion
2025. 4. 7. 00:37
문제
Baekjoon####: 수열
- 설명: 연속된
k
일 간의 온도의 합을 최대로 만들어라
풀이
- 변수를 탐색하며 온도의 값을 더해간다.
- 만약 지금까지 더한 일수가
k
라면 정답과 현재 온도의 합 중 큰 값을 저장한다.- 이후 가장 앞의 일자의 온도를 뺴준다.
- 이렇게하면 정확히
k
개의 온도의 합을 $O(n)$만에 유지할 수 있게된다.
오늘의 회고
- 투 포인터를 활용하여 슬라이딩 윈도우를 구현하는 문제이다.
- 오랜만에 슬라이딩 윈도우를 구현하니 옛날 기억이 새록새록 났다.
Code
# Baekjoon02559.py
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
arr = list(map(int, input().split()))
ans = -0x3f3f3f3f
curr = [0, 0]
for i in range(n):
curr[0] += arr[i]
curr[1] += 1
if curr[1] == k:
ans = max(ans, curr[0])
curr[0] -= arr[i - (k - 1)]
curr[1] -= 1
print(ans)