티스토리 뷰

문제 링크

 

1912번: 연속합

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

www.acmicpc.net

풀이

# 입력받기
n = int(input())
arr = list(map(int, input().split()))

# 주어진 배열에서 연속합 중 최댓값 반환
def max_continuous_sum(arr):
    dp = [0] * len(arr)
    dp[0] = arr[0]
    max_sum = dp[0]

    for i in range(1, len(arr)):
        dp[i] = max(dp[i-1] + arr[i], arr[i])
        max_sum = max(max_sum, dp[i])
    return max_sum

def solution(arr):
    return max_continuous_sum(arr)

result = solution(arr)
print(result)