알고리즘/백준
백준 11052 카드 구매하기
무명 씨
2020. 2. 24. 18:37
반응형
유형 : dp
카드 n장을 살 때, 지불할 수 있는 최대 금액을 구하는 문제이다.
풀이과정
카드 i 장을 구매하는데 필요한 금액을 dp[i] 이고, 카드 n장이 들어있는 팩의 가격이 p[n]라 하면, dp[i]는 아래와 같다.
dp[i] = dp[i-n] + p[n]
가능한 모든 n에 대하여 dp[i]가 최대값이 되도록 update해나가면 된다.
Python Code
1
2
3
4
5
6
7
|
v=int(input())
p=list(map(int,input().split()))
dp = [0]
for n in range(1,v+1):
dp.append(max(dp[-i-1]+p[i] for i in range(n)))
print(dp)
|
cs |
반응형