boj 1912

less than 1 minute read

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

from sys import stdin
from collections import deque

count = int(stdin.readline())
numlist = list(map(int, stdin.readline().split()))
zerocount = 0 ## 입력받는 원소중 0이하의 갯수 만약에 모두다 0이하면 계산을 할 필요없이 무조건 가장큰수를 출력하면 돼 

for i in range(count):
    if numlist[i] <= 0:
        zerocount += 1
if zerocount == count:
    print(max(numlist))
else:
    ans = deque()
    ans.append(numlist[0])
    for i in range(count-1):
        if numlist[i] < 0:
            zerocount += 1
        if numlist[i+1] + ans[i] < 0:
            ans.append(0)
        else:
            ans.append(numlist[i+1] + ans[i])
    print(max(ans))
notion
  • 다이나믹 프로그래밍
  • 다이나믹 프로그래밍에서 중요한 점 - 기억
  • 기억이라고 해서 반드시 뒤로만 전진할 것이 아닌 앞을 보면서 전진하는것이 중요하다!
  • 어렵다 다이나믹...

Categories:

Updated: