import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int mod = 10007;
int[][] A = new int[n][10]; // A[i][j] = 길이가 i이고 마지막 숫자가 j인 오르막수의 개수
// Bottom-Up 방식
// 점화식 : A[i][j] = A[i-1][0] + A[i-1][1] + ... A[i-1][j]
for (int i=0;i<10;i++) A[0][i] = 1;
for (int i=1;i<n;i++) {
for (int j=0;j<10;j++) {
for (int l=0;l<=j;l++) {
A[i][j] += A[i-1][j-l];
A[i][j] %= mod;
}
}
}
int temp = A[n-1][0];
for (int i=1;i<10;i++) {
temp += A[n-1][i];
temp %= mod;
}
System.out.println(temp);
}
}
'알고리즘 > 백준 알고리즘(JAVA)' 카테고리의 다른 글
JAVA)3085번 사탕게임 - 브루트 포스 (0) | 2020.08.02 |
---|---|
JAVA)2309번 일곱 난쟁이 - 브루트 포스 (0) | 2020.08.02 |
JAVA)1309번 동물원 - 다이나믹 프로그래밍 (0) | 2020.07.28 |
JAVA)1149번 RGB거리 - 다이나믹 프로그래밍 (0) | 2020.07.28 |
JAVA)2225번 합분해 - 다이나믹 프로그래밍 (0) | 2020.07.28 |
알고리즘/백준 알고리즘(JAVA) 카테고리의 다른 글
JAVA)3085번 사탕게임 - 브루트 포스
JAVA)2309번 일곱 난쟁이 - 브루트 포스
JAVA)1309번 동물원 - 다이나믹 프로그래밍
JAVA)1149번 RGB거리 - 다이나믹 프로그래밍