1 ๋ถ„ ์†Œ์š”

๋ฐฑ์ค€ ์‚ฌ์ดํŠธ ๋งํฌ

๋ฌธ์ œ

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)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ