[백준/Python3] 16194 카드 구매하기2

4418 단어 python백준python

https://www.acmicpc.net/problem/16194


풀이

'11052 카드 구매하기'와 사실상 같은 문제다. 이전 문제에서는 최댓값을 구하는게 목표라면, 이번 문제는 최솟값을 구해야한다. 따라서 max함수를 min함수로 바꾸는 방식으로 해결할 수 있다.

코드

# Initial
N = int(input())
P = list(map(int, input().split()))
P.insert(0, 0)
dp = [0 for _ in range(N+1)]
answer = 0

# P[n] = 카드 n개가 포함된 카드팩의 가격

# Make DP table
dp[1] = P[1]
for i in range(1, N+1):
    temp = float("inf")
    for j in range(1, i):
        temp = min(temp, dp[i-j] + P[j])
    dp[i] = min(temp, P[i])

# Answer
answer = dp[N]
print(answer)

좋은 웹페이지 즐겨찾기