4οΈβ£ Python/Problem Solving
[Python Algorithm] μ°μν© BOJ #1912
seolhee2750
2022. 1. 31. 17:23
λ¬Έμ
https://www.acmicpc.net/problem/1912
1912λ²: μ°μν©
첫째 μ€μ μ μ n(1 ≤ n ≤ 100,000)μ΄ μ£Όμ΄μ§κ³ λμ§Έ μ€μλ nκ°μ μ μλ‘ μ΄λ£¨μ΄μ§ μμ΄μ΄ μ£Όμ΄μ§λ€. μλ -1,000λ³΄λ€ ν¬κ±°λ κ°κ³ , 1,000λ³΄λ€ μκ±°λ κ°μ μ μμ΄λ€.
www.acmicpc.net
λ΄ λ¬Έμ νμ΄
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 리μ€νΈμ μΆκ°νλ€. - μμ κ°μ μ€νμ ν΅ν΄ μμ μμ μ°μνμ¬ κ°μ λν κ²μΈμ§,
μλλ©΄ μλ‘μ΄ μ°μ ν©μ λ§λλ κ²μ΄ λ§λμ§ νλ³ν΄ μ£Όλ©΄ λλ€.
π‘ νΌλλ°±
- μ£Όμ΄μ§ μμλ₯Ό λΆμν΄λ³΄λ©΄ μ½κ² νμ΄ λ°©λ²μ μ μ μλ λ¬Έμ μλ€.