백준_10844_쉬운 계단 수(DP)

맹민재·2023년 4월 3일
0

알고리즘

목록 보기
25/134
n = int(input())

dp = [[0]*10 for _ in range(n)]

for i in range(1, 10):
    dp[0][i] = 1

for i in range(1, n):
    for j in range(10):
        if j == 0:
            dp[i][j] = dp[i-1][1]
        elif j == 9:
            dp[i][j] = dp[i-1][8]
        else:
            dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]

print(sum(dp[n-1]) % 1000000000)

우선 한 자릿수인 계단 수의 경우는 0으로 시작하는 수는 계단 수가 아니므로 1~9까지 총 9개이다.

두번 째 자릿수 부터 Dp 값을 구하면 되는데 0과 9의 경우는 각각 1과 8에서 오는 경우 밖에 없다.

따라서 0과 9인 경우는 그냥 1에서 오는 경우와 8에서 오는 경우에 값을 저장시키고 나머지 수는 그 수에대해 이전 자릿 값의 -1, +1인 수에 대하여 값을 가지고 와서 대해준다.

마지막에 마지막 자릿 수에 대해 다 더해준 값이 정답이다.


profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글