https://www.acmicpc.net/problem/11052
[문제의 조건]
1. 카드 N개를 구매해야 한다.
2. 카드 팩은 총 N가지 종류가 존재한다.
3. i번째 카드팩은 i개의 카드를 담고 있고, 가격은 P[i]이다.
4. 카드 N개를 구매하는 비용의 최대값을 구하는 문제이다.
D[N] =카드 N개를 구매하는 최대 비용
= max(D[N-i] + P[i]) (1 <= i < = N)
n = int(input())
card = [0]
card += list(map(int, input().split()))
dp = [0 for _ in range(n+1)]
dp[1] = card[1]
dp[2] = max(card[2], card[1]*2)
for i in range(3, n+1):
dp[i] = card[i]
for j in range(1, i//2 + 1):
dp[i] = max(dp[i], dp[j] + dp[i-j])
print(dp[n])
'알고리즘 > DP' 카테고리의 다른 글
[백준/DP] 15990 1, 2, 3 더하기 5 (Python, 파이썬) (0) | 2021.08.01 |
---|---|
[백준/DP] 16194 카드 구매하기2 (Python, 파이썬) (0) | 2021.07.22 |
[백준/DP] 11727 2×n 타일링2 (Python, 파이썬) (0) | 2021.07.20 |
[백준/DP] 11726 2×n 타일링 (Python, 파이썬) (0) | 2021.07.19 |
[백준/DP] 1463 1로 만들기 (Python, 파이썬) (0) | 2021.07.13 |