문제 주소: https://www.acmicpc.net/problem/xxx
난이도: silver 2
cache = [-1000] * (N)
cache[0] = numbers[0]
cache[i] = max(numbers[i], numbers[i] + cache[i-1])
-메모이제이션 테이블의 i번째 원소가 어떤 의미를 가지는지 잘 정의하자
N = int(input())
numbers = list(map(int, input().split()))
cache = [-1000] * (N)
cache[0] = numbers[0]
for i in range(1,N):
#cache[i] = i번째 숫자까지 연속된 최대합
cache[i] = max(numbers[i], numbers[i] + cache[i-1])
print(max(cache))