728x90
반응형
1. 문제
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수
www.acmicpc.net
2. 풀이
- 점화식을 만드는데 많은 시간을 사용했다ㅠㅠㅠ
- 길이가 1일 때 0~9는 전부 1번씩 쓰인다.
길이가 2일 때 0=00(1번), 1=01,11(2번), 2=02,12,22(3번), 3=03,13,23,33(4번) .......
길이가 3일 때 0= 1번, 1=3번, 2=6번, 3=10번....
만약 길이 3 일때 3의 오르막 개수를 알고 싶다면, 길이 2일때의 0,1,2,3 을 다 더하면 10이라는 것을 알 수 있다.
3. 코드
import java.util.Scanner;
public class Main {
static final int mod =10007;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[][]dp = new int[num+1][10];
for(int i =0; i<10; i++) {
dp[1][i] =1;
}
for(int i =2; i<=num; i++) {
for(int j =0; j<10; j++) {
for(int k =0; k<=j;k++) {
dp[i][j] = dp[i][j]+dp[i-1][k];
dp[i][j] %=mod;
}
}
}
int sum=0;
for(int i =0; i<10; i++) {
sum+=dp[num][i];
}
System.out.println(sum%mod);
}
}
반응형
반응형
'알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글
[백준 11722] 가장 긴 감소하는 부분 수열(Java) (0) | 2020.12.28 |
---|---|
[백준 11055] 가장 큰 증가 부분 수열(Java) (0) | 2020.12.28 |
[백준 13398] 연속합 2(Java) (0) | 2020.12.28 |
[ 백준 1932] 정수 삼각형(Java) (0) | 2020.12.28 |
[백준 1520] 내리막 길(Java) (0) | 2020.12.22 |