importsysdefsolution(N:int)->int:# dp[자리 수][자리 중 맨 뒤에 있는 숫자]
dp=[[0]*10for_inrange(N+1)]foriinrange(1,10):dp[1][i]=1foriinrange(2,N+1):forjinrange(10):# 0일 때는 당연히 1밖에 올 수 없는 거고
ifj==0:dp[i][j]=dp[i-1][1]continue# 9일 때도 8밖에 올 수 없음 (0과 똑같은 이유, 끝자리니까)
ifj==9:dp[i][j]=dp[i-1][8]continue# 1 <= j <= 8: 전의 자리 수에서 -1과 +1일 때를 더해주면 됨 (이때가 그 경우의 수)
dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1]returnsum(dp[N])%1000000000N=int(sys.stdin.readline().rstrip())print(solution(N))
Leave a comment