# 쉬운 계단 수 import sys input = sys.stdin.readline def solution(): n = int(input().rstrip()) MOD = 1000000000 dp = [[1]*10 for _ in range(n)] dp[0][0] = 0 for i in range(1, n): for j in range(10): if i == 1 and j == 1: dp[i][j] = dp[i-1][j+1] continue if j == 0: dp[i][j] = dp[i-1][j+1] elif j == 9: dp[i][j] = dp[i-1][j-1] else: dp[i][j] = (dp[i-1][j-1] + dp[i-1][j+1])%MOD print(sum(dp[n-1])%MOD) return solution() """ 걸린 시간: 25분 시간 복잡도: n*10 칸을 채워야하기 때문에 O(10n)이다. 해설: dp[i][j]는 i번째 자리수가 j로 끝날때 경우의 수이다. 이전 행의 앞뒤에서만 올 수 있으므로, dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]이다. 0과 9는 각각 오른쪽과 왼쪽에서만 올 수 있고, 두번째 행에서 1은 0으로 시작할 수 없기 때문에 오른쪽에서만 와야한다. 위 조건 그대로 코드로 구현한 뒤 mod로 나머지들만 계속 업데이트해가면 된다. 마지막 수는 어떤 숫자든 가능하기 때문에 마지막 행의 모든 값을 더한 후 mod해서 답을 구한다. mod 공식은 1904 풀이를 확인하자. """