본문 바로가기

전공지식/알고리즘

[백준][DP][11057] 오르막 수

URL : https://www.acmicpc.net/problem/11057


- 소스코드

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<=9; i++){
		dp[1][i] = 1;
	}
		
	for(int i=2; i<=n; i++){
		for(int j=0; j<=9; j++){
			//0~9까지 돌면서 자신보다 큰 수만 더해나가기.
			for(int k=j; k<=9; k++){
				dp[i][j] += dp[i-1][k];
			}
			dp[i][j] %= 10007;
		}
	}
		
	int ans = 0;
	for(int i=0; i<=9; i++){
		ans += dp[n][i];
	}
		
	System.out.println(ans);
}


- My Thinking

이전 쉬운 계단수 문제(10844번)랑 비교했을 때 크게 달라지지 않아서 문제가 어렵지는 않았다. 추가된 점은 3중 for문을 이용해서 j (0<=j<=9) 보다 큰 값인 k라는 변수를 이용해서 오름차순인 경우의 수만 더해나가는 방식으로 문제를 해결하였다.