import sys
n = int(sys.stdin.readline())
seq = list(map(int, sys.stdin.readline().split()))
dp = seq[:]
dp[0] = seq[0]
for i, v in enumerate(seq):
for j in range(i-1, -1, -1):
if seq[j] < v:
dp[i] = max(dp[i], v+dp[j])
print(max(dp))
해당 문제는 제일 큰 수의 합을 기억하며 나아가는 해법을 찾아가야 한다.
처음 제출했을때 dp 리스트를 모두 0으로 채워놓고 시작했는데, 현재 값보다 작은 값이 발견이 안됐을 때 0으로 처리되어 오답을 얻었다.
추후에 seq를 복사하여 구현했지만 seq 자체를 사용해서 구현해도 됐었다.
회고
11053문제에서 살짝 변형된거라 크게 어렵지 않았고 다른 문제들의 풀이도 비슷한 것 같다.