from collections import deque
n = int(input())
arr = deque(list(map(int,input().split())))
ans = [0]*n
if n >= 1:
ans[0] = arr[0]
if n>=2:
ans[1]=max(arr[1],ans[0]+arr[1])
for i in range(2,n):
ans[i]=max(arr[i],ans[i-1]+arr[i])
print(max(ans))
풀이
다이나믹 프로그래밍으로 풀이하는데, 보통 DP문제는 리스트로 해결한다. 행렬이든, 1차원 리스트든..
처음엔 2개만 선택해야하는줄 알고, deque로 앞, 뒤 원소를 빼면서 계산하도록 했는데 그게 아니었다. 그래서 위와 같이 작성했고 바로 해결 완료!