반응형
유형 : 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 |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 4949 균형잡힌 세상 (0) | 2020.02.25 |
---|---|
백준 2839 설탕배달 (0) | 2020.02.24 |
백준 7576 토마토 (0) | 2020.02.21 |
백준 15998 카카오머니 (0) | 2020.02.20 |
백준 1931 회의실 배정 (0) | 2020.02.17 |