[C++]BOJ 10844 - 쉬운 계단 수

[C++]BOJ 10844 - 쉬운 계단 수

숫자 i 다음 으로 나올 수 있는 수는 i-1과 i+1이다.
하지만 0과 9는 다음으로 나올 수 있는 수가 각각 1과 8이다.
이 부분에 대해 예외처리를 하려 했으나 dp가 전역으로 정의돼있기 때문에 필요가 없었다.

i번째 자릿수에 나올 수 있는 숫자 j를 2차원 배열 dp에 저장한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
const long long mod = 1e9;
int n, dp[101][11];
long long ans;
int main() {
for(int i = 1; i < 10; i++)
dp[1][i] = 1;
cin >> n;
for(int i = 2; i <= n; i++)
for(int j = 0; j < 10; j++)
dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j + 1]) % mod;
for(int i = 0; i < 10; i++)
ans += dp[n][i];
cout << ans % mod;
}