n = int(input()) price = list(map(int,input().split())) dp = [[0]*(n+1) for _ in range(n+1)] for i in range(1,n+1): dp[i][1] = price[0]*i for i in range(2,n+1): for j in range(2,i+1): dp[i][j] = max(price[j-1]+dp[i-j][i-j],dp[i][j-1] ) print(dp[n][n]) 이번 문제는 구매하려고 하는 카드의 개수 N과 각 개수마다 구매하는데 필요한 비용 P1 ~ PN 까지 주어졌을 때, 카드 N개를 최대한 많은 비용으로 구매하였을 때의 금액을 구하는 문제이다. 이 문제를 풀 때 문득 '0-1 배낭 문제'가 떠올랐는데, 비슷한 느낌..