<Baekjoon Basic Algorithms 1/2 401, 402, 403 Dynamic Programming ํ๊ธฐ>
2023.12.14, Basic 1/2 400 Start.
2023.12.21, Basic 1/2 400 DONE. (8th day)
2023.12.22, Basic 1/2 401 DONE. (9th day)
2023.12.25, Baisc 1/2 402 DONE. (12th day)
2023.12.25 - Baekjoon 17404: RGB ๊ฑฐ๋ฆฌ2 ๋๋ ๋๊ณผ ์์์ ์ ์ฅํ๋ DP๋ก ๋์ ํ์. 3์ผ ๋์ ๊ณ ๋ฏผํด๋ ์ ํ๋ ธ๋์ง ๋ชฐ๋๋๋ฐ, ์ง๋ฌธ์ ํตํด์ ํ์ธํ๋ ๋ง์ง๋ง์ print ์ถ๋ ฅ์ ๋นผ๋จน์์์ =|. Colab ์์๋ return ๋งํด๋ ๊ฒฐ๊ณผ๊ฐ์ด ์๋์ผ๋ก ๋์์ ์ ํ ๋ชฐ๋๋ ์ํฉ. ์ต๋ช ์ ์ฝ๋๋ถ์ ๋์์ ํตํด์, ๋ด ์๊ณ ๋ฆฌ์ฆ ๊ตฌ์ฑ์ ํ๋ฆฐ ๊ฒ์ด ์์์ ํ์ธํ ์ ์์๊ณ , ์ฌ์ํ ์ค์๊ฐ ์ ๋ง ๊ณ ์น๋๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ์ ๋๋! ๊ทธ๋๋ ํฌ๋ฆฌ์ค๋ง์ค ์ ๋ฌผ ๋ฐ์ ๋๋. ๊ฐ์ฌํจ.
์ธํฐ๋ท ํ์ด๋ ๋ณดํต RGB ๊ฑฐ๋ฆฌ 1์ ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋๋ก ์ด์ฉํ๋, [R, G, B] ์ ์ด๊ธฐ๊ฐ์ ์ค์ ํ์ฌ ๊ฐ์ ๋ก R, G, B ์ค ํ๊ฐ์ง ์์ผ๋ก ์์ํ๋ ๋ฐฉ์์ ์ฑํ. ๊ฝค ์ค๋งํธํ ๋ฐฉ์์ผ๋ก ์๊ฐ๋์์. =)
2023.12.25 - Basic Algorithms 1/2 DONE =)
2023.12.22 - Baekjoon 11054: ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด, ๊ธฐ์ค์ ๋๋์ด ์ฆ๊ฐ/๊ฐ์์ ๊ดํ ํจ์๋ฅผ ๊ฐ๊ฐ ๊ตฌ์ฑํ๋๋ ์๊ฐ์ด๊ณผ.
(1) ๊ฐ๊ฐ A[:i]. A[i+1,:] inc/dec ๋ฅผ ์ฐพ๋๋ค. O(n^2) (2) ์ฐพ๊ณ ๋์ max()๋ฅผ ์งํํ๋ค. O(n^3)
(3) ํฉ์น๋ค.ย
2023.12.22 - Baekjoon 11054: ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด, ๊ธฐ์ค์ ๋๋์ด ์ฆ๊ฐ/๊ฐ์์ ๊ดํด ์ฐพ๋ ๊ฒ์ ๋์ผ.ย
(1) ๊ฐ๊ฐ A[:] ์ ์ฒด์ ๋ํด์ inc/dec๋ฅผ ์ฐพ๋๋ค. O(n^2)
(2) ํฉ์น๋ค.ย
์ฒ์ ์๊ณ ๋ฆฌ์ฆ์, A๋ฅผ ๋๋์ด์ ๊ฐ๊ฐ์ inc/dec ๋ถ๋ถ์์ด์ ์ฐพ๊ณ max๋ฅผ ์ทจํ๋ ๋ฒ๊ฑฐ๋ก์์ ์ํด์ ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋ ์์น. ๋๋ฒ์งธ ์๊ณ ๋ฆฌ์ฆ์ A๋ฅผ ๋๋์ง ์๊ณ ์งํ.
2023.12.22 - Baekjoon 13398 ์ฐ์ํฉ 2
์์ด์ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ๋ ํฌํจ
A์ ์ต์๊ฐ์ด -1000 ์ด๋ฏ๋ก, -1001๋ก initializationํ์ฌ ๋น๊ต.
์์ํ๋๋ฅผ ์ง์ ์ ๋์ ์ฐ์ ์ต๋ํฉ์ Baekjoon 11054 ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด์ฒ๋ผ, A[:] ์ ์ฒด์ ๋ํด ์ญ๋ฐฉํฅ ์ฐ์ ์ต๋ํฉ์ ์ฐพ์์, ์์ A[i]๋ฅผ ๋นผ๊ณ ํฉํ์ฌ ๋น๊ต.
DP 2๊ฐ๋ฅผ ๋๋์ด์ ์์๋ฅผ ์ ๊ฑฐํ์ ์๋ ์ฐ์ํฉ/ ์์๋ฅผ ์ ๊ฑฐํ์ ์๋ ์ฐ์ํฉ ๋๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์ฐ๊ฒฐ๋ ์ ํ์์ ๋ง๋๋ ์ธํฐ๋ท ํ์ด๋ ์ธ์์ .
import sys
input = sys.stdin.readline
N = int(input())
A = list(map(int, input().split()))
dp = [[x for x in A] for _ in range(2)]
for i in range(1, N):
ย ย ย ย dp[0][i] = max(dp[0][i - 1] + A[i], dp[0][i])
ย ย ย ย dp[1][i] = max(dp[0][i - 1], dp[1][i - 1] + A[i])
print(max(max(dp[0]), max(dp[1])))ย
2023.12.21 - Baekjoon 14002: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด 4
ย Baekjoon 11053: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ฐ์ํ๋ ์์ด์์ ์์ด ์์ฒด๋ ์ถ๋ ฅํ๋ ๋ฌธ์ . ๋์ผํ ์๊ณ ๋ฆฌ์ฆ.
2023.12.21 - Baekjoon 1912: ์ฐ์ํฉ, ์์ด์ด ์ฐ์์ด๋ผ๋ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ์ฌ์ด DP
Basic 1/2 400 DONE
2023.12.21 - Baekjoon 11055: ๊ฐ์ฅ "ํฐ" ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด
ย Baekjoon 11053: ๊ฐ์ฅ "๊ธด" ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ์ต๋ํฉ์ผ๋ก ํ์ฅํ๋ ๋ฌธ์ . ๊ต์ฅํ ์ ์ฌํ ์๊ณ ๋ฆฌ์ฆ.
2023.12.21 - Baekjoon 11722: ๊ฐ์ฅ ๊ธด "๊ฐ์"ํ๋ ๋ถ๋ถ ์์ด
ย Baekjoon 11053: ๊ฐ์ฅ ๊ธด "์ฆ๊ฐ"ํ๋ ๋ถ๋ถ ์์ด์ ๊ฐ์ํ๋ ์์ด๋ก ํ์ฅํ๋ ๋ฌธ์ . ๊ต์ฅํ ์ ์ฌํ ์๊ณ ๋ฆฌ์ฆ.
2023.12.19 - Baekjoon 2133: ํ์ผ์ฑ์ฐ๊ธฐ. ๊ฐ 3*N๋ง๋ค 1ํ์ด๋ 3ํ์ ๋ชจ๋ 1x2 ๋ธ๋ญ์ผ๋ก ์ฑ์ฐ๋ ๊ณ ์ ์ ๋ชจ์์ด 2๊ฐ์ฉ ์กด์ฌํ๋ค.
2023.12.20 - Baekjoon 11053: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ฒฝ์ฐ, ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๊ธฐ ํ๋ค์ด์ ์ธํฐ๋ท ์ฐธ์กฐ.
2023.12.19 - Baekjoon 2156; ํฌ๋์ฃผ ์์ ๋์ ์์ธ์์ด ์ฐ์์ผ๋ก 0๊ฐ, 1๊ฐ, 2๊ฐ ์๋์ง์ ๋ฐ๋ผ ๊ฒฝ์ฐ๋ฅผ ๋๋์ด DP ์ ์ฉ.ย
์ธํฐ๋ท์ ๋ณดํต d[x]:=ย x๋ฒ์งธ ์์ธ์๊น์ง ๋ง์ ๊ฒฝ์ฐ, d[x]= max(d[x-1], d[x-2]+cup[x], d[x-3]+cup[x]+cup[x-1]) ๋ก ํ์ด. ย ๊ฐ๊ฐ n=3์ธ ๊ฒฝ์ฐ, (OOX, OXO, XOO) ์ ํด๋น.
2023.12.18 - Baekjoon9465: ์คํฐ์ปค, ๋ง์ง๋ง ์ด์ ์คํฐ์ปค๋ฅผ 1) ๋ชจ๋ ์ฌ์ฉํ์ง ์๋๋ค, 2) ์ฒซ๋ฒ์งธ ํ์ ์คํฐ์ปค๋ง ์ฌ์ฉํ๋ค., 3)์ธ๋ฒ์งธ ํ์ ์คํฐ์ปค๋ง ์ฌ์ฉํ๋ค. ๋ก ๋๋์ด์ DP๋ก ํ์ด
2023.12.18 - Baekjoon 1149 RGB ๊ฑฐ๋ฆฌ, ๊ฐ๋จํ DP ๋ฌธ์ . ๋์ด R,G,B๋ก ๋๋๋ ๊ฒฝ์ฐ๋ก ๋๋์ด์ DP ์ ์ฉ.
< Baekjoon 401, 402, 403, Dynamic Programming(DP) ์ค๊ฐ ํ๊ธฐ>
์ ํ์์ ์ฐพ๋ ๊ณผ์ ์ด ๊ฝค ์ค์ํ๋ค.
ํ์ฌ ๋ถ๋ถ ์์ด ๋ฌธ์ , ์ฐ์ํฉ ๋ฌธ์ ์ ์ข ๋ฅ์์ ํค๋งค๊ณ ์๋ค.
์ธํฐ๋ท๊ณผ ๋ค๋ฅด๊ฒ ๋๋ DP ๋์ ์ค๋ณต์กฐํฉ or ๋จ์ผ๋ฐฐ์ด๋ณด๋ค ๋ ์ง๊ด์ ์ธ ์ด์ค๋ฐฐ์ด์ DP๋ฅผ ์ฌ์ฉํ์ฌ ํผ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์๋ค.
2023.12.17 - Baekjoon 11057 ์ค๋ฅด๋ง์ ๊ฐฏ์: ๊ฐ๋จํ DP, ๋์ด 0,...9 ๋ก ๋๋๋ ๊ฐ๊ฐ์ ๋ํ์ฌ DP๋ก ๊ตฌํ.
2023.12.17 - Baekjoon 1932: ์ ์ ์ผ๊ฐํ: ๊ฐ๋จํ DP
2023.12.17 - Baekjoon 15988: 1,2,3, ๋ํ๊ธฐ 3, ์๊ฐ์ด๊ณผ ํด๊ฒฐ์ ์ํด ๋ชจ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋๋จธ์ง ์ฐ์ฐ ์ ์ฉ
2023.12.17 - Baekjoon 1309 ๋๋ฌผ์: ์ธํฐ๋ท์ d[i] = 2*d[i-1]+d[i-2] ๋ผ๋ ์ ํ์์ผ๋ก ํด๊ฒฐ. ๋๋ ์ผ์ด์ค 3๊ฐ๋ฅผ ๋๋์ด์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ์์์ผ๋, ๋ฐฐ์ด์ ์ฌ์ฌ์ฉํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋ ํด๊ฒฐ.
2023.12.17 - < Baekjoon 15990: 1,2,3, ๋ํ๊ธฐ 5 > ์์์ 1,2,3 ์ผ๋ก ํ๋ ์์ด๋ก ๊ฒฝ์ฐ๋ฅผ ๋๋์ด์ ์ด์ค๋ฐฐ์ด์ DP๋ฅผ ์ ์ฉ. MOD ์ฐ์ฐ์ ํตํด์ ์๊ฐ์ด๊ณผ ํด๊ฒฐย
2023.12.17 - Baekjoon 2225: ํฉ๋ถํด,ย
๋๋ ์ค๋ณต์กฐํฉ ๊ณต์์ผ๋ก ํด๊ฒฐ.
DP๋ก ํด๊ฒฐํ๋ ค๋ฉด,
d[n][k] = d[n-1][k] + d[n][k-1] ์ ํ์ ํ์ฉ. (N-1์ ๋ง๋ค๊ธฐ ์ํด K๊ฐ์ ์๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์ ์ผ ์์ '1'์ฉ ๋ํ๊ฑฐ๋ (์ ์ผ ์์ด 0์ด ์๋์์ด) + N์ ๋ง๋ค๊ธฐ ์ํด K-1๊ฐ์ ์๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์ ์ผ ์์ '0' ์ ์ถ๊ฐํ๊ฑฐ๋ (์ ์ผ ์์ด 0์ธ ์์ด)ย
์ธํฐ๋ท์ 2์ฐจ์ DP๋ก ์ ํ์ ๊ตฌํ๋ ๊ณผ์ ์ ๋๋ถ๋ถ ๊ทผ๊ฑฐ๊ฐ ๋ถ์ถฉ๋ถํจ์ ํ์ธํจ. ์ค๋ณต์กฐํฉ์ ์ดํด๊ฐ ์์ด์ ๊ทธ๋ ๋ค๊ณ ์๊ฐ๋จ. ๊ณจ๋ ์ด์์ ๋ฌธ์ ์์๋ ์๊ฐ๋ณด๋ค ๋ฐฑ์ค์ ์ดํด์์ด ํ๊ณ ์๋ฃจ์ ์ ์ฌ๋ ค๋๋ ์ฌ๋๋ค์ด ๋ง์๋ณด์ธ๋ค. ์ธํฐ๋ท์ ๋๋๋ก ์๊ฐ๋ณด๋ค ํ๋ฆฌํฐ๊ฐ ๋ฎ์ ์ ๋ณด์ฒ์ผ ์๋ ์๋ค๋ ์๊ฐ๋ ๋ค์๋ค.
2023.12.16 - Baekjoon 2193: ์ด์น์. ๊ฐ๋จํ DP ๋ฌธ์
2023.12.16 Sat. - Weekend Morning Baekjoon: DP Studyย =)
2023.12.16 - Baekjoon 10884: ์ฌ์ด ๊ณ๋จ ์. ์ฒ์์๋ ์คํธ๋ง์ ๋ง๋ค๊ณ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ผ๋ก ์ ๊ทผํ์ผ๋, ์๊ฐ์ด๊ณผ. ๊ธธ์ด n์ str์ ๋ํ๋ ๊ณผ์ ์ O(n)์ด ๊ฑธ๋ฆผ.ย
๋ค์์ผ๋ก 0์ผ๋ก ์์ํ๋ ~ 9๋ก ์์ํ๋ ๊ณ์ฐ์๋ฅผ
N+1 ๊ธธ์ด์ 0์ผ๋ก ์์ํ๋ ๊ณ๋จ์ ๊ฐฏ์๋, N ๊ธธ์ด์ 1๋ก ์์ํ๋ ๊ณ๋จ์ ๊ฐฏ์ย
N+1 ๊ธธ์ด์ x>2๋ก ์์ํ๋ ๊ณ๋จ์ ๊ฐฏ์๋, N ๊ธธ์ด์ x-1 ๋ก ์์ํ๋ + N ๊ธธ์ด์ x+1 ๋ก์์ํ๋ ๊ณ๋จ์ ๊ฐฏ์,ย
N+1 ๊ธธ์ด์ 9๋ก ์์ํ๋ ๊ณ๋จ์ ๊ฐฏ์๋, N ๊ธธ์ด์ 8๋ก ์์ํ๋ ๊ณ๋จ์ ๊ฐฏ์.
์ ์ 3๊ฐ์ง ๊ท์น์ผ๋ก ๊ตฌํ ๋ค์, 0์ผ๋ก ์์ํ๋ ๊ณ๋จ์ ๊ฐฏ์๋ง ์ ์ธํ๊ณ ๋ชจ๋ ๋ํ์ฌ 10^9์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅ.
2023.12.15 - Baekjoon Gold V
2023.12.15 - Baekjoon 11726: 2 x n ํ์ผ๋ง, ํ์ผ์ ์ฑ์ง์ ์ ์ผ์ด์ค๋ฅผ ๋๋์ด์ DP๋ก ํ๊ณ , ๋ค๋ฅธ ํด์ค์ ๋ณด๋ ํผ๋ณด๋์น ์์ด.
2023.12.15 - DP
2023.12.14 - DP ๊ณต๋ถ ๋ฐ ์ ์ฉ ์์! ๋ณธ๊ฒฉ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ.
2023.12.15 - DP ๋ฌธ์ ์ธ๋ฐ, ์ฌ๊ทํจ์(DFS, Depth-First Search)๋ก ๊ตฌํ.