
문제를 풀기 위해서 하나하나 작성해보면 다음과 같은 규칙을 찾을 수 있습니다.

첫번째 숫자가
0으로 시작하는 계단수는 없지만 dp[3][1]인 경우 dp[2][0]의 값을 알아야하기 때문에 dp[2][0]의 값은 알아야합니다.
import Foundation
let num = Int(readLine()!)!
var dp = Array(repeating: Array(repeating: 0, count: 10), count: 101)
var sum = 0
for i in 0...9 {
    dp[1][i] = 1
}
if num > 1 {
    for i in 2...num {
        for j in 0...9 {
            if j == 0 {
                dp[i][j] = dp[i-1][j+1] % 1000000000
            } else if j == 9 {
                dp[i][j] = dp[i-1][j-1] % 1000000000
            } else {
                 dp[i][j] = (dp[i-1][j-1] + dp[i-1][j+1]) % 1000000000
            }
        }
    }
}
for i in 1...9 {
    sum = (sum + dp[num][i]) % 1000000000
}
print(sum % 1000000000)