-
[Python] ๋ฐฑ์ค - 1912 ์ฐ์ํฉ (DP)๐ป Algorithm/Python 2021. 10. 25. 01:11
๐ ์ฒซ ๋ฒ์งธ ์๋ (์๊ฐ์ด๊ณผ)
- ์ด์ค for๋ฌธ์ผ๋ก ๊ฐ ์์ i๋ง๋ค ์ ์์๋ค๊ณผ์ ๋ถ๋ถํฉ์ ๊ตฌํ์ฌ ๊ทธ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ d[i]์ ์ ์ฅ
- d[i] ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ถ๋ ฅ
n = int(input()) array = list(map(int, input().split())) d = [min(array)] * n for i in range(n): sum = 0 for j in range(i, -1, -1): sum += array[j] d[i] = max(d[i], sum) print(max(d))
โ ๋ ๋ฒ์งธ ์๋ (์ฑ๊ณต)
- ๊ฐ ์์ i๋ง๋ค ๊ทธ ์์ ๋ถ๋ถํฉ์ ๊ตฌํ ํ์๋ ์์
- ์ด์ฐจํผ ์์๊ฐ ํฌํจ๋๋ฉด ์ต๋๊ฐ์ ๋ฌผ ๊ฑด๋๊ฐ๋ฏ๋ก i ์ง์ ์์์์ ํฉ๋ง ํ์ธํ๋ฉด ๋จ
n = int(input()) array = list(map(int, input().split())) d = [0] * n d[0] = array[0] for i in range(1, n): d[i] = max(array[i], d[i-1]+array[i]) print(max(d))
๋ฌธ์
n๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์์ ์์ด์ด ์ฃผ์ด์ง๋ค.
์ฐ๋ฆฌ๋ ์ด ์ค ์ฐ์๋ ๋ช ๊ฐ์ ์๋ฅผ ์ ํํด์ ๊ตฌํ ์ ์๋ ํฉ ์ค ๊ฐ์ฅ ํฐ ํฉ์ ๊ตฌํ๋ ค๊ณ ํ๋ค. ๋จ, ์๋ ํ ๊ฐ ์ด์ ์ ํํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด์ 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 ์ด๋ผ๋ ์์ด์ด ์ฃผ์ด์ก๋ค๊ณ ํ์. ์ฌ๊ธฐ์ ์ ๋ต์ 12+21์ธ 33์ด ์ ๋ต์ด ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ n๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง๋ค.
์๋ -1,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
10
10 -4 3 1 5 6 -35 12 21 -1
์์ ์ถ๋ ฅ 1
33
์์ ์ ๋ ฅ 2
10
2 1 -4 3 4 -4 6 5 -5 1
์์ ์ถ๋ ฅ 2
14
์์ ์ ๋ ฅ 3
-5
-1 -2 -3 -4 -5
์์ ์ถ๋ ฅ 3
-1
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] LeetCode 121 Best Time to Buy and Sell Stock (DP) (0) 2022.07.02 [Python] ๋ฐฑ์ค - 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ (DP) (0) 2021.10.26 [Python] ์ด์ฝํ - ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํน์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (์ด์งํ์) (0) 2021.10.20 [Python] ์ด์ฝํ - ๋ก๋ณถ์ด ๋ก ๋ง๋ค๊ธฐ (์ด์งํ์) (0) 2021.10.20 [Python] ๋ฐฑ์ค - 11047 ๋์ 0 (Greedy) (0) 2021.10.03