접근
https://www.acmicpc.net/problem/2208
현재인덱를 포함하는 누적합과, 현재 인덱스가 M번째가 되는 누적합 중 큰 값을 저장하여 문제를 해결할 수 있다.
코드
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
arr = [0]
prefixSum = [0]
for _ in range(N):
arr.append(int(input()))
prefixSum.append(prefixSum[-1] + arr[-1])
dp = [0] * (N + 1)
dp[M] = prefixSum[M]
for i in range(M + 1, N + 1):
dp[i] = max(dp[i - 1] + arr[i], prefixSum[i] - prefixSum[i - M])
print(max(dp))
더 생각해 볼 것?
...
코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!
반응형
'코딩 > 백준 (Python)' 카테고리의 다른 글
백준 2228: 구간 나누기 (Python) (0) | 2023.11.17 |
---|---|
백준 2169: 로봇 조종하기 (Python) (0) | 2023.11.05 |
백준 1937: 욕심쟁이 판다 (Python) (0) | 2023.10.15 |
백준 11048: 이동하기 (Python) (0) | 2023.10.09 |
백준 10815: 숫자 카드 (Python) (0) | 2023.04.15 |
최근댓글