d[N][j] : 길이가 N인 숫자이면서 마지막 숫자가 J일때 계단수의 갯수
라고 정의N = int(input()) # 1<=N<=100
d = [[0]*10 if i != 1 else [1]*10 for i in range(N+1)]
# d[1] = 1로 초기화 , 나머지는 0으로 초기화
d[1][0] = 0
mod = 1000000000
for i in range(2,N+1):
for j in range(10): # j: 0~9
if j == 9:
d[i][j] = d[i-1][j-1]
elif j ==0:
d[i][j] = d[i-1][j+1]
else:
d[i][j] = d[i-1][j+1] + d[i-1][j-1]
d[i][j] %= mod
result = sum(d[N]) % mod
print(result)
모범답안
d = [[0]*10 for _ in range(100+1)]
mod = 1000000000
n = int(input())
for i in range(1, 10):
d[1][i] = 1
for i in range(2, n+1):
for j in range(10):
d[i][j] = 0
if j-1 >= 0:
d[i][j] += d[i-1][j-1]
if j+1 <= 9:
d[i][j] += d[i-1][j+1]
d[i][j] %= mod
ans = sum(d[n]) % mod
print(ans)