package Baekjoon;
import java.util.Scanner;
public class Number11057 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); //수의 길이
int[][] dp = new int[N+1][10];
for(int i = 0; i<10; i++) { // 한자리 수 일 경우(수의 길이가 1일 경우)에는 0~9까지 각 숫자들을 한번씩 이용하여 10가지의 오르막 수를 만들 수 있기 때문에 자릿수가 1인경우 각숫자의 dp값이 모두 1로 초기화를 시켜준다
dp[0][i] = 1; //0~9까지 한자리수에서 만들 수 있는 오르막수는 모든수를 1로 고정
}
for(int i = 1; i<N+1; i++) { //2자리수일 경우(수의길이가 2이상)
for(int j =0; j<10; j++) {
for(int k =j; k<10; k++) {
dp[i][j] +=dp[i-1][k]; //두자리수 이상의 경우는 이전 자릿수 N-1에서 j부터 마지막 9까지의 합
dp[i][j] %= 10007;
}
}
}
System.out.println(dp[N][0] % 10007);
}
}
JAVA