백준 2559번 수열
코드 풀이
인덱스 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|
입력 변수(num) | 0 | 3 | -2 | -4 | -9 | 0 | 3 | 7 | 13 | 8 | -3 |
누적 합(prefix_sum) | 0 | 3 | 1 | -3 | -12 | -12 | -9 | -2 | 11 | 19 | 16 |
- 어떤 구간의 합을 구하고 싶다면, 누적 합의 값을 빼서 구할 수 있습니다.
예를 들어, num[1] ~ num[3]
구간의 합을 구하고 싶다면,
prefix_sum[3] - prefix_sum[0]
을 통해 구할 수 있습니다.
import sys
n, k = map(int, sys.stdin.readline().split(' '))
num = [0] + list(map(int, sys.stdin.readline().split(' ')))
prefix_sum = [0] * (n + 1)
for i in range(1, n+1):
prefix_sum[i] = prefix_sum[i-1] + num[i]
result = []
for i in range(k, n+1):
hap = prefix_sum[i] - prefix_sum[i-k]
result.append(hap)
print(max(result))