https://www.acmicpc.net/problem/11055
이전 위치에 있는 값보다 큰 값만 계산한다는 조건하에 DP를 계산하면 된다.
import copy
N = int(input()) # A의 크기 입력
A = list(map(int, input().split())) # 수열 A 입력
# dp[i] : i까지 왔을 때 합의 최대
# A에 대한 값만 복사
dp = copy.deepcopy(A)
for i in range(1, N):
for j in range(i):
# 전 위치에 있는 값보다 클 때만 계산
if A[i] > A[j]:
dp[i] = max(A[i] + dp[j], dp[i])
print(max(dp))