[๋ฐฑ์ค 10844๋ฒ] [๐ฅ1] ์ฌ์ด ๊ณ๋จ ์ (python)
๋ฌธ์
45656์ด๋ ์๋ฅผ ๋ณด์.
์ด ์๋ ์ธ์ ํ ๋ชจ๋ ์๋ฆฌ์ ์ฐจ์ด๊ฐ 1์ด๋ค. ์ด๋ฐ ์๋ฅผ ๊ณ๋จ ์๋ผ๊ณ ํ๋ค.
N์ด ์ฃผ์ด์ง ๋, ๊ธธ์ด๊ฐ N์ธ ๊ณ๋จ ์๊ฐ ์ด ๋ช ๊ฐ ์๋์ง ๊ตฌํด๋ณด์. 0์ผ๋ก ์์ํ๋ ์๋ ๊ณ๋จ์๊ฐ ์๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
1
์์ ์ถ๋ ฅ 1
9
์์ ์ ๋ ฅ 2
2
์์ ์ถ๋ ฅ 2
17
ํ์ด
๋ค์๊ณผ ๊ฐ์ ์ ํ์์ ์ธ์ธ ์ ์๋ค.
- dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1] (1 <= j <= 8)
- dp[i][0] = dp[i-1][1]
- dp[i][9] = dp[i-1][8]
์ฝ๋
ver(1)
import sys
input = sys.stdin.readline
# ์
๋ ฅ๊ฐ ๋ฐ๊ธฐ
n = int(input())
# 0 ~ 9๊น์ง์ ์๋ฅผ ๊ฐ ์๋ฆฌ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ฅํ 2์ฐจ์ ๋ฆฌ์คํธ ์์ฑ
# i๋ ์๋ฆฌ์, j๋ 0 ~ 9๊น์ง์ ์
dp = [[0 for _ in range(10)] for _ in range(n+1)]
# ์ด๊ธฐ๊ฐ ์ค์ (1์๋ฆฌ ์์ผ ๋ ๊ฐ ์ซ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์๋ 1)
for i in range(1,10):
dp[1][i] = 1
# ๋๋จธ์ง ์๋ฆฌ์์ ๋ํด์ ๊ฒฝ์ฐ์ ์ ๊ตฌํ๊ธฐ
MOD = 1000000000
for i in range(2,n+1): # i๋ ์๋ฆฌ์
for j in range(10): # j๋ ํ์ฌ ์๋ฆฌ์ ์ฌ ์ ์๋ ์ซ์
if j == 0: # ํ์ฌ ์๋ฆฌ์ 0์ด ์ฌ ๊ฒฝ์ฐ
dp[i][j] = dp[i-1][j+1] # ๋ฐ๋ก ๋ค์ ์๋ฆฌ์ 1์ด ์ค๋ ๊ฒฝ์ฐ์ ์
elif j == 9: # ํ์ฌ ์๋ฆฌ์ 9๊ฐ ์ฌ ๊ฒฝ์ฐ
dp[i][j] = dp[i-1][j-1] # ๋ฐ๋ก ๋ค์ ์๋ฆฌ์ 8์ด ์ค๋ ๊ฒฝ์ฐ์ ์
else: # ํ์ฌ ์๋ฆฌ์ 0 ~ 8๊น์ง์ ์๊ฐ ์ฌ ๊ฒฝ์ฐ
dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1] # ๋ฐ๋ก ๋ค์ ์๋ฆฌ์ j-1 ํน์ j+1์ด ์ค๋ ๊ฒฝ์ฐ์ ์ ํฉ
# n์๋ฆฌ ์์ผ ๋ ๊ฐ ์ซ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ํฉํ ํ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง ์ถ๋ ฅ
print(sum(dp[n])% MOD)
๋๊ธ๋จ๊ธฐ๊ธฐ