알고리즘 문제풀이

수익[백준 4097]

wiojfe 2025. 1. 9. 17:45

 

https://www.acmicpc.net/problem/4097

 

 

연속합의 최대를 찾는 문제이다. 

while True:
    n = int(input())
    if n == 0:  # 테스트 케이스 종료 조건
        break

    arr = []
    for _ in range(n):
        arr.append(int(input()))

    # DP 배열 초기화
    dp = [0] * n
    dp[0] = arr[0]
    max_sum = dp[0]  # 최대 수익

    for idx in range(1, n):
        dp[idx] = max(arr[idx], dp[idx - 1] + arr[idx])
        max_sum = max(max_sum, dp[idx])  # 최대 수익 갱신

    print(max_sum)