1. 문제 설명
https://www.acmicpc.net/problem/1912
1912번: 연속합
첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.
www.acmicpc.net
2. 아이디어
수를 차례대로 읽으면서 값을 더하는데 조건을 몇 가지 추가해주면 끝나는 문제다.
만약 현재 누적값이 음수라면 굳이 음수를 유지할 이유가 있을까?
과감히 버리고 새로운 값을 그대로 할당시켜버리면 된다.
result는 순열의 첫 번째 값을 저장해두었다가 누적값이 result보다 작으면
그때마다 result를 갱신하면 된다.
그리 어렵지 않게 풀 수 있는 문제.
3. 코드
def solution():
n = int(input())
sequence = list(map(int, input().split()))
current, result = 0, sequence[0]
for new in sequence:
if current < 0:
current = new
else:
current += new
if result < current:
result = current
print(result)
solution()