[파이썬] 백준 11052번 카드 구매하기

작성:

백준 #11052 카드 구매하기


# 카드 i개 카드백은 Pi원
# 카드 N개를 구매하려고 함

# 출력: N개의 카드를 구매하기 위해 지불할 금액의 최댓값

# n == 0 -> cards[0]
# n == i => 새로운 카드가 추가
    # -> dp[i-1] + cards[1] (1개짜리 카드팩)
    # -> dp[i-2] + cards[2] (2개짜리 카드팩)
    # -> dp(i-k) + cards[k] (k개짜리 카드팩) 

def solution(N):
    cards = [0] + list(map(int, input().split()))
    dp = [0 for i in range(N+1)]
    dp[1] = cards[1]
    for i in range(2, len(cards)):
        for k in range(1, i):
            dp[i] = max(dp[i], dp[i-k] + cards[k], cards[i])
    print(dp[-1])

if __name__ == '__main__':
    solution(int(input()))

댓글남기기