[๋ฐฑ์ค€-1912] ์—ฐ์†ํ•ฉ / Python

๐Ÿ“š Problem Solving/Baekjoon

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

 

1912๋ฒˆ: ์—ฐ์†ํ•ฉ

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” n๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” -1,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค.

www.acmicpc.net

n = int(input())
arr = list(map(int, input().split()))
d = [0] * n
d[0] = arr[0]
for i in range(1, n):
    d[i] = max(arr[i - 1] + arr[i], arr[i], d[i - 1] + arr[i])

print(max(d))

 

ํ•ด์„ค

๊ฐ„๋‹จํ•œ DP ๋ฌธ์ œ์˜€๋‹ค.

    d[i] = max(arr[- 1] + arr[i], arr[i], d[- 1] + arr[i])

์œ„์™€ ๊ฐ™์ด ํ•ต์‹ฌ ๊ทœ์น™์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.๐Ÿ˜€