2022. 1. 20. 20:47ใ๐ฑ Algorithm/DP
์ ๊ทผ ๋ฐฉ๋ฒ
์ฐ์๋ ์๋ฅผ ๋ํด์ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ผํ๋ค.
์ฃผ์ด์ง ๋ฐฐ์ด์ ์ซ์ ์ค ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ํ๋๋ผ๋ ์ต๋ ํฉ์ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ผํ๋ค.
์๋ ๋ฉ๋ชจ๋ ์ฃผ์ด์ง ํ ์คํธ์ผ์ด์ค๋ฅผ ์ค์ ๋ก ๋ํด๋ณธ ๊ณผ์ ์ ๋ํ๋ธ๋ค.
arr ์ ์ฃผ์ด์ง ์ ๋ ฅ์ด๊ณ , dp ์ ๊ฐ ์์๋ ์ฐ์๋ ํฉ์ ๋ํ๋ธ๋ค.
dp[i] ์ ๊ฐ์ arr ์ ์ฒซ๋ฒ์งธ ์์๋ถํฐ ์ฐจ๋ก๋ก ๋ํด๊ฐ๋ฉด์ ์
๋ฐ์ดํธ ๋๋ค. ์ฆ dp[i]
์ ๊ฐ์ dp[i - 1] + arr[i]
๊ฐ ๋๋ ์
์ด๋ค.
์ค์ํ ์
์ arr[i] ์ ๊ฐ์ ๋ํ๋๋ฐ๋ dp[i] ์ ๊ฐ์ด arr[i] ๋ณด๋ค ์์ผ๋ฉด, ๋ํ์ง ์๊ณ ๊ทธ๋ฅ arr[i] ๋ฅผ dp[i] ์ ๊ฐ์ผ๋ก ํ ๋นํ๋ค.
์ฝ๋
N = int(input())
arr = list(map(int, input().split()))
dp = [0] * N
dp[0] = arr[0]
for i in range(1, N):
dp[i] = max(dp[i - 1] + arr[i], arr[i])
print(max(dp))
'๐ฑ Algorithm > DP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 10844 ํ์ด์ฌ (0) | 2022.01.29 |
---|---|
๋ฐฑ์ค 11055 ํ์ด์ฌ (0) | 2022.01.23 |
๋ฐฑ์ค 11053 ํ์ด์ฌ (0) | 2022.01.18 |
๋ฐฑ์ค 12852 ํ์ด์ฌ (1) | 2022.01.12 |
๋ฐฑ์ค 2293 ํ์ด์ฌ (0) | 2022.01.09 |