본문 바로가기
알고리즘/dynamic programming

[백준][Python] 1912번 연속합

by 임짠짠 2022. 5. 16.
반응형
 

1912번: 연속합

첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

코드

n = int(input())
n_list = list(map(int,input().split()))
sum = [0] * n

for i in range(n):
    sum[i] = max(n_list[i], n_list[i]+sum[i-1])
print(max(sum))

 

설명

첫번째 숫자부터 차례대로 이전 값과 더한다.

만약 더한 값이 자기 자신보다 클 경우 sum[i]에 n_list[i]+sum[i-1]을 넣어주고 만약 자기 자신보다 작을 경우 그냥 자신의 값을 넣어준다.  

sum에 들어있는 값 중에 가장 큰 값을 출력시키면 된다. 

 

반응형

댓글