1일 1 알고리즘

[백준] 연속합

wallnut's 2020. 8. 16. 23:50

이번에는 연속합을 구하는 알고리즘을 구하여봅니다

n = int(input())
num_list = list(map(int, input().split()))
temp = [0 for _ in range(n)]
result = -1001

for i in range(n):
    temp[i] = max(temp[i-1] + num_list[i], num_list[i])
    result = max(result, temp[i])
        
print(result)

왼쪽부터 더한 값과 현재 값 중의 max값 현재까지의 최댓값과 result 중의 max값 을 통하여 최댓값을 구할 수 있습니다 그리고 중간에 음수가 끼었지만 최댓값이 되는 경우의 수를 고려할 수 있으며시간 복잡도를 O(n) 안에 끝낼 수 있습니다.