[BOJ] 13398 ์ฐ์ํฉ 2 (Pyhton / ํ์ด์ฌ)

๐งท ๋ฌธ์
https://www.acmicpc.net/problem/13398
n๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์์ ์์ด์ด ์ฃผ์ด์ง ๋, ์ฐ์๋ ๋ช๊ฐ์ ์๋ฅผ ์ ํํด์ ๊ตฌํ ์ ์๋ ํฉ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. (๋จ, ์์ด์์ ์๋ฅผ ํ๋ ์ ๊ฑฐํ ์ ์๋ค(์ ๊ฑฐํ์ง ์์๋ ๋๋ค.))
๐ ํ์ด
์ด ๋ฌธ์ ๋ 2์ฐจ์์ DP table์ ๊ตฌ์ฑํ์ฌ ํด๊ฒฐํ ์ ์๋ค.
Step 1.
๋จผ์ ์์ด์์ ์๋ฅผ ํ๋ ์ ๊ฑฐํ์ ๋ (dp[i][1]
)์ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ (dp[i][0]
)๋ก ๋๋์ด์ค๋ค.
dp[0][0]
, dp[0][1]
์ sequence[0]
์ผ๋ก ์ด๊ธฐํ ํด์ค๋ค.
Step 2.
1๋ถํฐ n-1๊น์ง for๋ฌธ์ ๋๋ฉด์
1. dp[i][0]
์ ์๋ฌด๋ฐ ์์๋ฅผ ์ ๊ฑฐํ์ง ์์์ ๋๋ฅผ ๋น๊ตํ๋ฉด ๋๋ฏ๋ก, (์ด์ ๊น์ง์ ์ฐ์ํฉ + i๋ฒ์งธ ์์ด)๊ณผ i๋ฒ์งธ ์์ด์ ๊ฐ์ ๋น๊ตํด ๊ทธ ์ค ํฐ๊ฐ์ ๋์
ํด์ค๋ค.
dp[i][0] = max(dp[i-1][0] + sequence[i], sequence[i])
2. dp[i][1]
์ ์์ด์ ํน์ ์์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก, (i๋ฒ์งธ ์์ด์ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ)์ (i๋ฒ์งธ ์ด์ ์ ์ด๋ฏธ ํน์ ์์๋ฅผ ์ ๊ฑฐํด i๋ฒ์งธ ์์ด์ ์ ํํ๋ ๊ฒฝ์ฐ)๋ก ๋๋ ์ ์๋ค.
dp[i][1] = max(dp[i-1][1] + sequence[i], dp[i-1][0])
Step 3.
์ด๋ ๊ฒ for๋ฌธ์ n-1๋ฒ ๋๋ฉด์ res
๋ ๊ฐ ์ธ๋ฑ์ค๊น์ง์ ๊ฒฝ์ฐ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฃ์ด์ค๋ค.
res
๋ฅผ ๋ฆฌํดํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ต์ ๊ตฌํ ์ ์๋ค.
๋๋์
์ฒ์์ ์ด ๋ฌธ์ ๋ฅผ ์ ํ์ ๋๋ ์์ด์์ ์์๊ฐ์ ๋ฐ๋ก ์ ์ฅํ ํ์ ์์๊ฐ๋ค์ ํ๋์ฉ ์ ๊ฑฐํ์ ๋์ ์ฐ์ํฉ์ ๊ตฌํ๋ O(N^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ๋น์ฐํ๊ฒ๋ n์ ๋ฒ์๋๋ฌธ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค. DP ๋ฌธ์ ๋ ์ฌ๋ฌ ๋ฌธ์ ๋ค์ ์ ํ๋ฉด์ ์ด๋ป๊ฒ DP table์ ๊ตฌ์ฑํ ์ง๊ฐ ์ค์ํ ๊ฒ ๊ฐ๋ค. ๋ ๋ง์ด ๊ฒฝํํ๊ณ ๋ ๋ฐ์ ํด์ผ๊ฒ ๋ค.
๐ ๋์ ์ฝ๋
def solution(n): sequence = list(map(int, input().split())) dp = [[0] * 2 for _ in range(n)] dp[0][0], dp[0][1] = sequence[0], sequence[0] res = sequence[0] for i in range(1, n): dp[i][0] = max(dp[i-1][0] + sequence[i], sequence[i]) dp[i][1] = max(dp[i-1][1] + sequence[i], dp[i-1][0]) res = max(dp[i][0], dp[i][1], res) return res if __name__ == "__main__": N = int(input()) print(solution(N))
'Algorithm > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 9465 ์คํฐ์ปค (Python / ํ์ด์ฌ) (0) | 2021.08.18 |
---|---|
[BOJ] 2225 ํฉ๋ถํด (Python / ํ์ด์ฌ) (0) | 2021.08.17 |
[BOJ] 1699 ์ ๊ณฑ์์ ํฉ (Pyhton / ํ์ด์ฌ) (0) | 2021.08.17 |
[BOJ] 11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (Pyhton / ํ์ด์ฌ) (0) | 2021.08.04 |
[BOJ] 10844 ์ฌ์ด ๊ณ๋จ ์ (Python / ํ์ด์ฌ) (0) | 2021.08.04 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[BOJ] 9465 ์คํฐ์ปค (Python / ํ์ด์ฌ)
[BOJ] 9465 ์คํฐ์ปค (Python / ํ์ด์ฌ)
2021.08.18 -
[BOJ] 2225 ํฉ๋ถํด (Python / ํ์ด์ฌ)
[BOJ] 2225 ํฉ๋ถํด (Python / ํ์ด์ฌ)
2021.08.17 -
[BOJ] 1699 ์ ๊ณฑ์์ ํฉ (Pyhton / ํ์ด์ฌ)
[BOJ] 1699 ์ ๊ณฑ์์ ํฉ (Pyhton / ํ์ด์ฌ)
2021.08.17 -
[BOJ] 11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (Pyhton / ํ์ด์ฌ)
[BOJ] 11053 ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (Pyhton / ํ์ด์ฌ)
2021.08.04
๋๊ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.