์ฝ”ํ…Œ์ค€๋น„

<dp> ๋ฐฑ์ค€ 4097๋ฒˆ. ์ˆ˜์ต (์‹ค๋ฒ„ 2)

์š”๋Œœ๋‹ค 2023. 1. 10. 15:36

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

 

4097๋ฒˆ: ์ˆ˜์ต

์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” N์ด ์ฃผ์–ด์ ธ ์žˆ๋‹ค. (1 ≤ N ≤ 250,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋งค์ผ ๋งค์ผ์˜ ์ˆ˜์ต P๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (-10,000 ≤ P ≤ 10

www.acmicpc.net

"""
๋ฌธ์ œ ์ดํ•ด :

1  2  3  4  5  6
-3 4  9  -2 -5 8
-3 1  10 8  3  11
i๊ฐ€ 0๋ณด๋‹ค ์ž‘์œผ๋ฉด pop()
"""
import sys
input = sys.stdin.readline
while 1:
  n = int(input())
  if n == 0:
    break
  lst = []
  for i in range(n):
    lst.append(int(input()))

  # lst[0] = max(0, lst[0]) #์ด๋Ÿผ ๊ฐ’์ด ์Œ์ˆ˜์ผ ๋•Œ, 0 ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Œ
  for i in range(1, n):
    lst[i] = max(lst[i - 1] + lst[i], lst[i])
  print(max(lst))

ํ•œ ๋ฒˆ์— ๋งž์ถ”๋„๋ก ๋…ธ๋ ฅํ•˜์ž !