ALGORITHM
백준 11057 오르막 수 (Java)
공부하는_다온
2023. 3. 9. 21:47
1. 문제 링크
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수
www.acmicpc.net
2. 문제 및 입출력예제
3. 문제 풀이
dp로 배열에 저장하면서 풀었다.
한 자리 숫자는 자기 자신만 오르막 수이기 때문에 dp가 1이다.
그 이후의 숫자는 2자리(1-11, 12...19 / 2- 22, 23..29) 예와 같이 (9 - 첫번째 자리 수) 이다.
입력받은 자리수까지 진행하는 i 반복문 / 0부터 9까지 도는 j 반복문 / j보다 크거나 같은 수로 도는 k 반복문을 돌면서 dp[i][j]에 dp[i-1][k]를 더하면 된다.
4. 코드
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[][] dp = new int[N+1][10];
for(int i=0;i<10;i++) {
dp[0][i] = 1;
}
for(int i=1;i<N+1;i++) {
for(int j=0;j<10;j++) {
for(int k=j;k<10;k++) {
dp[i][j] += dp[i-1][k];
dp[i][j] %= 10007;
}
}
}
System.out.println(dp[N][0]);
}
}