첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 위한 연속적인 날짜의 수이다. K는 1과 N 사이의 정수이다. 둘째 줄에는 매일 측정한 온도를 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -100 이상 100 이하이다.
출력
첫째 줄에는 입력되는 온도의 수열에서 연속적인 K일의 온도의 합이 최대가 되는 값을 출력한다.
입력 예시
10 2
3 -2 -4 -9 0 3 7 13 8 -3
출력 예시
21
풀이
범위 합을 구하면 되며, 시간상의 효율을 구하기 위해 i번째 범위합은 i-1번째 범위합에서 왼쪽 끝을 빼고 오른쪽 끝을 더해주도록 하자. 이 정도만 고려하면 쉽게 풀 수 있는 문제이다. 이를 슬라이딩 윈도우라고 한다.
풀이 코드
N, K = map(int, input().split())
temp_list = list(map(int, input().split()))
part_sum = sum(temp_list[:K])
answer = part_sum
for i in range(N-K) :
part_sum += temp_list[i+K] - temp_list[i]
if answer < part_sum :
answer = part_sum
print(answer)