문제 : https://www.acmicpc.net/problem/11052
i개의 카드를 구매하기 위한 최대 금액 : dp[i]
k개가 들어있는 카드 팩 : cp[k]
dp[i] = cp[k] + dp[i-k] 가 성립
n = int(input())
cp = [0] + list(map(int, input().split()))
dp = [0 for _ in range(n+1)]
for i in range(1, n+1):
for k in range(1, i+1):
dp[i] = max(dp[i], cp[k] + dp[i-k])
print(dp[n])
문제 : https://www.acmicpc.net/problem/16194
n = int(input())
cp = [0] + list(map(int, input().split()))
dp = [0]
for i in range(1,n+1):
dp.append(dp[i-1] + cp[1])
for k in range(2, i+1):
dp[i] = min(dp[i], dp[i-k] + cp[k])
print(dp[n])
append
를 활용하여 하나씩 늘렸다. (0 이아닌 false로 초기화 한다음 if문 사용해서 하는 사람도 있더라~)