문제풀이
import sys
input = sys.stdin.readline
n = int(input())
num = list(map(int,input().split()))
dp = [-1001]*(n+1)
dp[0]=num[0]
for i in range(1,n+1):
if dp[i-1]<0:
dp[i]=num[i]
else:
dp[i]=dp[i-1]+num[i]
print(max(dp))
피드백
dp[i-1] 값이 0보다 작으면 dp[i]=num[i] 를 0보다 크면 dp[i]=dp[i-1]+num[i] 를 해준다.
dp 리스트 중 가장 큰 값을 출력해준다.
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 백준 1780 "종이의 개수_분할정복" 문제풀이 (1) | 2022.11.08 |
---|---|
[Python] 백준 7568 "덩치_브루트포스" 문제풀이 (0) | 2022.10.26 |
[Python] 백준 2630 "색종이만들기_분할정복" 문제풀이 (0) | 2022.10.20 |
[Python] 백준 2959 "거북이_sort" 문제풀이 (0) | 2021.09.28 |
[Python] 백준 10162 "전자레인지_greedy" 문제풀이 (0) | 2021.09.28 |