https://www.acmicpc.net/problem/11057
10844랑 엄청 비슷한 문제
다만, 문제에서 수는 0으로 시작할 수 있다고 했으니까 DP를 0부터 초기화해줘야한다.
점화식 만드는 게 여전히 어렵다💦
항상 N과 N-1 관계 생각하기
DP[4][2] -> 2로 끝나는 4자리 숫자의 경우의 수 -> _ _ _ 2
DP[4][2] = DP[3][0] + DP[3][1] + DP[3][2] -> (? ? 0 + ? ? 1 + ? ? 2)
#include <iostream>
using namespace std;
int dp[1001][10];
int main() {
int N;
int ans = 0;
cin >> N;
for (int i = 0; i < 10; i++) {
dp[1][i] = 1;
}
for (int i = 2; i <= N; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k <= j; k++) {
dp[i][j] += dp[i - 1][k];
dp[i][j] %= 10007;
}
}
}
for (int i = 0; i < 10; i++) {
ans += dp[N][i];
ans %= 10007;
}
cout << ans;
return 0;
}