๋ฌธ์
https://www.acmicpc.net/problem/1912
๋ด ๋ฌธ์ ํ์ด
import sys
sys.setrecursionlimit(1000000)
n = int(input())
nums = list(map(int, input().split()))
sums = [nums[0]]
for i in range(1, n):
if nums[i] < sums[-1] + nums[i]:
sums.append(sums[-1] + nums[i])
else:
sums.append(nums[i])
print(max(sums))
๐ DP ๋ฌธ์ ๋ก, ์ฐ์๋๋ ์๋ค์ ํฉ์ ์ต๋๋ฅผ ์์๋๋ก ๋์ ํด์ฃผ๋ ๊ฒ์ด ํฌ์ธํธ !
- ์ ๋ ฅ๋ฐ์ nums ๋ฆฌ์คํธ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋๋ฉฐ (ํ์ฌ ๊ฐ + ๋์ ํฉ)๊ณผ (ํ์ฌ ๊ฐ)์ ๋น๊ตํ๋ค.
- (ํ์ฌ ๊ฐ)์ด ๋ ํด ๊ฒฝ์ฐ ์์์ ์ฐ์๋ ์๋ค์ ํฉ์ ๋ํ๋ ๊ฒ์ด ์ํด์ด๋ฏ๋ก
ํ์ฌ ๊ฐ์ ๊ทธ๋๋ก sum ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค. - (ํ์ฌ ๊ฐ + ๋์ ํฉ)์ด ๋ ํด ๊ฒฝ์ฐ, ๋์ ํด์จ ํฉ์ ๋ํ๋ ๊ฒ์ด ์ด๋์ด๋ฏ๋ก
ํ์ฌ๊ฐ์ ๋์ ํ ๊ฐ์ ๋ํ ๊ฐ์ sums ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค. - ์์ ๊ฐ์ ์คํ์ ํตํด ์์ ์์ ์ฐ์ํ์ฌ ๊ฐ์ ๋ํ ๊ฒ์ธ์ง,
์๋๋ฉด ์๋ก์ด ์ฐ์ ํฉ์ ๋ง๋๋ ๊ฒ์ด ๋ง๋์ง ํ๋ณํด ์ฃผ๋ฉด ๋๋ค.
๐ก ํผ๋๋ฐฑ
- ์ฃผ์ด์ง ์์๋ฅผ ๋ถ์ํด๋ณด๋ฉด ์ฝ๊ฒ ํ์ด ๋ฐฉ๋ฒ์ ์ ์ ์๋ ๋ฌธ์ ์๋ค.
'4๏ธโฃ Python > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python Algorithm] ์ด์น์ BOJ #2193 (0) | 2022.02.01 |
---|---|
[Python Algorithm] ํฌ๋์ฃผ ์์ BOJ #2156 (0) | 2022.01.31 |
[Python Algorithm] ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ์์ด BOJ #11053 (0) | 2022.01.30 |
[Python Algorithm] ์ฌ์ ๊ฐ์ BOJ #4963 (0) | 2022.01.30 |
[Python Algorithm] ํ ๋งํ BOJ #7576 (0) | 2022.01.30 |
๋๊ธ