https://www.acmicpc.net/problem/2559
연속적인 K일의 온도의 합이 최대가 되는 값을 출력하면 된다.
answer 값이 음수가 될 수 있다는 생각을 못해서 몇번을 틀렸는지.. ^^
0. 입력 받기
n, k = map(int, input().rsplit())
nums = list(map(int, input().rsplit()))
1. 포인터를 이동 시키면서 최대한 값 더해주기
l 포인터
의 범위는 [0 ~ n-k]r 포인터
의 범위는 [0 ~ l+k]curr
에 r 포인터
가 가리키는 값을 더해주고, r
을 한 칸 뒤로 이동시켜준다.answer
변수에 가장 큰 curr
값을 저장한다.l 포인터
를 한 칸 뒤로 이동시켜주기 위해 curr
에서 l 포인터
가 가리키는 값을 빼준다.for l in range(n-k+1):
while r < l + k and r < n:
curr += nums[r]
r += 1
answer = max(answer, curr)
curr -= nums[l]
import sys
input = sys.stdin.readline
n, k = map(int, input().rsplit())
nums = list(map(int, input().rsplit()))
r, answer, curr = 0, float('-inf'), 0
for l in range(n-k+1):
while r < l + k and r < n:
curr += nums[r]
r += 1
print("[curr]:{0}, [r]:{1}, [answer]:{2}".format(curr, r, answer))
answer = max(answer, curr)
curr -= nums[l]
print(answer)