https://www.acmicpc.net/problem/10211
import sys
input=sys.stdin.readline
t=int(input())
for i in range(t):
n=int(input())
table=[0] + list(map(int, input().split()))
sumtable=[0]
resulttable=[0]
# 누적합 구하기
for j in range(1,n+1):
sumtable.append(sumtable[j-1]+table[j])
for k in range(1, n+1):
for g in range(1, n+1):
if k<=g :
resulttable.append(sumtable[g]-sumtable[k-1])
# print(resulttable)
result=max(resulttable[1:])
print(result)
✔️ 누적합 문제가 아니라 동적프로그래밍(dp) 문제였다.
import sys
input=sys.stdin.readline
for i in range(t):
n=int(input())
table=list(map(int, input().split()))
dp=[0]*n
dp[0]=table[0]
for j in range(1, n):
dp[j]=max(dp[j-1]+table[j],table[j])
print(max(dp))