n = int(input()) cards = [0] + list(map(int, input().split())) dp = [0 for _ in range(n+1)] # 각 자리에는 카드 i개를 구매하는 최대 가격이 저장됨 for i in range(1, n+1): for j in range(1, i+1): # i가 4면 (3, 1), (2, 2), (1, 3)일 때를 보는것 dp[i] = max(dp[i-j] + cards[j], dp[i]) # i개 구매할때의 최대 가격 갱신 print(dp[n]) 풀이 포인트 dp 리스트의 자리 i에는 카드 i개를 구매하는 최대 가격이 저장된다. 이중 for문을 돌면서 카드 i개를 구매하는 경우, j가 1부터 돌면서 dp[i-j] + cards[j] 의 값들 중, 최..