https://www.acmicpc.net/problem/11052
시간 1초, 메모리 256MB
input :
output :
조건 :
DP를 채우기 위해 현재 계산하는 것이 4라면.
4가 될수 있는 경우.
P[4]
DP[1] + DP[3]
DP[2] + DP[2]
이 세 가지중 최댓값을 넣어주는 것.
다른 경우는 없나요?
DP에 들어 갔다는 것 자체가 각 N개를 살 때의 최댓값을 넣어놓은 것이기 때문에 신경 쓸 필요가 없다.
import sys
n = int(sys.stdin.readline())
data = list(map(int, sys.stdin.readline().split()))
dp = [0]
for item in data:
dp.append(item)
for i in range(2, n + 1):
for j in range(1, (i // 2) + 1):
dp[i] = max(dp[i], dp[j] + dp[i - j])
print(dp[n])