[백준 1912번 실버2] 연속합 (DP/파이썬) -복습무필요

밀루·2023년 4월 2일
0

백준 문제풀이

목록 보기
20/51

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

n = int(input())
arr = list(map(int, input().split()))
dp = [0 for _ in range(n)]

for i in range(0, n):
    if i == 0:
        dp[i] = arr[i]
    else:
        if dp[i-1]+arr[i] > 0:
            dp[i] = dp[i-1]+arr[i]
        else:
            dp[i] = 0

if max(arr) < 0: print(max(arr))
else: print(max(dp))

Tech:

  1. 주어진 어레이가 전부 음수인 경우, dp에는 -1, 0, 0, 0, 0을 넣지만 리턴할땐 최대값인 0이 아닌, 모든 어레이 중 max 값을 return 해야했다.
    해당 제한조건이 예시 input에 있었기 때문에 잡았지만 그렇지 않을 경우 상당히 고민이 많이 될듯
profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글