์ฝ๋ํธ๋ฆฌ ์ฑ๋ฆฐ์ง ๋ง์ง๋ง์ฃผ๋ฅผ ๊ฐํ๋ฅธ ์์น๊ณก์ ์ผ๋ก ๋ง๋ฌด๋ฆฌํ๊ฒ ๋์ด์ ๋๋ฌด ๊ธฐ๋ถ์ด ์ข๋ค^.^
๋ง์ง๋ง์ผ๋ก ํผ ๋ฌธ์ ๊ฐ ์ ์ ๋ฒ์ฃผ์ ๋ชป ํผ ๋ฌธ์ ์ ํ์ด์ด์ ์ด์ง ๋จ๋ฆฌ๋ ๋ง์์ผ๋ก ํ์๋๋ฐ, ์ ๋ฒ์ ๋ชป ํ์๋ ์์ธ์ ์ฐพ์ ๊ฒ ๊ฐ์์ ํ๋ฉด์๋ ๊ธฐ๋ถ์ด ์ข์๋ค.
๋ก์ง์ ์์๋ฅผ ๋ฐ๊ฟ์ ํ๋ฉด์ ์ผ๋ถ ํ ์คํธ์ผ์ด์ค์์ ํ๋ฆฌ๊ฒ ๋์ค๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋์ ๋ก์ง์ ๋ค์ ๋ฐ๊ฟ๋ณด๋ ์ด๋ฒ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ๊ฒ์ ๋ณผ ์ ์์๋ค.
์ญ์ ์ ๋ฒ์ฃผ์ ํํด๋ ๋๋ฐ์ ์ง์ ์ํ ๋ฐ๋์์ด์๋..?ํธํธ
์ค๋ ํ๊ฐ๋ฅผ ํ๊ณ ๋๋ dp์ ๋ํ ํ์ต์ด ํ์ํ๋ค๋ ์ฝ๋ฉํธ๊ฐ ๋์ค๊ฒ ๋๋ค.
dp๋ ํญ์ ์ฝํ ์์ ํ์ ๋ฌธ์ ๋ก ๋์ค๋ ์ ํ์ด์๋๋ฐ ์ด๋ฒ ๊ธฐํ์ ๊ณต๋ถํ ์ ์์ด์ ๋๋ฌด ์ข์๋ค.
๊ทธ๋์ ๋ฐ๋ก ํธ๋ค๋ฅ ๊ฐ๋ ๊ณต๋ถ๋ฅผ ์์ํ๋ค.
DP (Dynamic Programming)
ํฐ ๋ฌธ์ ์ ๋ํ ๋ต์ ์ป๊ธฐ ์ํด ๋์ผํ ๋ฌธ์ ์ด์ง๋ง ํฌ๊ธฐ๊ฐ ๋ ์์ ๋ฌธ์ ๋ค์ ๋จผ์ ํด๊ฒฐํ ๋ค, ๊ทธ ๊ฒฐ๊ณผ๋ค์ ์ด์ฉํด ํฐ ๋ฌธ์ ๋ฅผ ๋น๊ต์ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ๋ ๊ธฐ๋ฒ
์ผ๋จ, DP๋ ์ ํ์์ ์ฐพ์๋ด๋ ๊ฒ์ด ์ค์ํ๋ค
ํ์๋ ๋ฌธ์
์ด ๋ฌธ์ ๋ dp๋ฅผ ์ดํดํ๊ธฐ์ ๋ฑ ์ข์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์์ ๊ณ ๋ฅด๊ฒ ๋์๋ค.
n์ธต ๋์ด์ ๊ณ๋จ์ ์ค๋ฅด๋ ค๊ณ ํฉ๋๋ค. ํ ๋ฒ์ ์ ํํ 2๊ณ๋จ ํน์ 3๊ณ๋จ ๋จ์๋ก๋ง ์ฌ๋ผ๊ฐ ์ ์๋ค๊ณ ํ์ ๋, n์ธต ๋์ด์ ๊ณ๋จ์ ์ฌ๋ผ๊ฐ๊ธฐ ์ํ ์๋ก ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํด๋ณด์ธ์. ๋จ, ํญ์ 2๊ณ๋จ ํน์ 3๊ณ๋จ ๋จ์๋ก๋ง ์ฌ๋ผ๊ฐ ์ ์๊ธฐ์ n์ธต๊น์ง ์ ํํ 1๊ณ๋จ์ด ๋จ์ ์ํฉ์์๋ n์ธต์ผ๋ก ์ฌ๋ผ๊ฐ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ ํ ์์์ ์ ์ํฉ๋๋ค.
ํด๋น ๋ฒ์งธ ์ธต์ ๋๋ฌํ๊ธฐ ์ํด์๋
1) 2๊ณ๋จ์ฉ ์ค๋ฅด๊ฑฐ๋
2) 3๊ณ๋จ์ฉ ์ค๋ฅด๊ธฐ
๋ฐ๋ผ์ ์ ํ์์ dp[i] = dp[i - 2] + dp[i - 3]
dp[i-2]๋ 2๊ณ๋จ ์ , dp[i-3]์ 3๊ณ๋จ ์ ์ผ๋ก ์๊ฐํ๋ฉด ๋๋ค.
์ด ์ ํ์์ผ๋ก ๊ณ์ฐํ๋ฉด n์ธต๊น์ง ์ฌ๋ผ๊ฐ๋ ๋ฐฉ๋ฒ์ ์ ์ ์๋ค.
์ด ์ ํ์์ ์ด์ฉํด์ ์์ฑํ ์ฝ๋๊ฐ ์๋ ์ฝ๋์ด๋ค.
MAX_N = 1000
MOD = 10007
# ๋ณ์ ์ ์ธ ๋ฐ ์
๋ ฅ:
n = int(input())
dp = [0] * (MAX_N + 1)
# ์ด๊ธฐ ์กฐ๊ฑด ์ค์
dp[0] = 1
dp[1] = 0
dp[2] = 1
dp[3] = 1
# ์ ํ์์ ๋ฐ๋ผ dp๊ฐ ์ฑ์ฐ๊ธฐ
# dp[i] = dp[i - 2] + dp[i - 3]
for i in range(4, n + 1):
dp[i] = (dp[i - 2] + dp[i - 3]) % MOD
print(dp[n])
์ฑ๋ฆฐ์ง ํ๊ธฐ
๊ฐ๋ฐ์ ์ค๋น๋ฅผ ํ๋ค๋ฉด ๋์ ์ ์๋ ์ฝํ ๋ฅผ ์ฝ๋ํธ๋ฆฌ ์ฑ๋ฆฐ์ง๋ก ํจ๊ป ํ๋ฉด์ ๋๋ฌด ์ข์๋ค.
๊ทธ ์ ์๋ ๊ณต๋ถ๋ฅผ ์ํ ๊ฑด ์๋์ง๋ง, ๋ญ๊ฐ ์ ๋๋ก ํ๊ณ ์๋์ง ๋ญ๋ถํฐ ๊ณต๋ถํด์ผํ๋์ง ๊ณ ๋ฏผ์ด ๋ง์๋๋ฐ ์ฝ๋ํธ๋ฆฌ๋ ๊ทธ๋ฐ ๊ณ ๋ฏผ์ ํ๋ ๋์๊ฒ ๊ธธ์ ๋ด์ฃผ๊ณ ๊ณต๋ถํ๋ฉด ํ ์ ์๋ค๋ ์์ ๊ฐ์ ์ฃผ์๋ค.
์ฑ๋ฆฐ์ง ๋๋ถ์ ์ข ๋ ์ต๊ดํํ ์ ์์๊ณ , ๋ฌด์์ ํ๊ธฐ ์ซ์ดํ๋ ์ฝํ ๋ฌธ์ ํ๊ธฐ๋ฅผ ์ฌ๋ฐ๊ฒ ํ ์ ์๊ฒ ๋๋ค
์ฑ๋ฆฐ์ง๊ฐ ๋๋๊ณ ๋ ์์ผ๋ก ๊ณ์ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถํ๋ฉด์ ๋ฌธ์ ๋ฅผ ๊พธ์คํ ํ์ด์ผ๊ฒ ๋ค
์ด ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ๋งํ๊ธธ ์ด๋ ๊ฒ ๊ณต๋ถํ๋ฉด ์ ๋๋๋ฉด ์ฝํ ๋ง์คํฐ๊ฐ ๋์ด์๊ฒ ๋ค๊ณ ํ๋๊น~ ์ด์ฌํ ๊พธ์คํ! ๊ณต๋ถํด์ผ๊ฒ ๋ค!
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝ๋ํธ๋ฆฌ ์ฑ๋ฆฐ์ง] 7์ฃผ์ฐจ (10/17-10/23), ๋ฐฑํธ๋ํน (0) | 2023.10.23 |
---|---|
[์ฝ๋ํธ๋ฆฌ ์ฑ๋ฆฐ์ง] 6์ฃผ์ฐจ (10/11-10/16), BFS (0) | 2023.10.13 |
[BOJ/13164] ํ๋ณต ์ ์น์ (๊ทธ๋ฆฌ๋) (0) | 2023.10.11 |
[์ฝ๋ํธ๋ฆฌ ์ฑ๋ฆฐ์ง] 5์ฃผ์ฐจ (10/4-10/9), DFS (0) | 2023.10.09 |
[์ฝ๋ํธ๋ฆฌ ์ฑ๋ฆฐ์ง] 4์ฃผ์ฐจ (9/27-10/2), ๋ฐฑํธ๋ํน (0) | 2023.09.30 |