본문 바로가기

ALGORITHM

백준 11057 오르막 수 (Java)

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]);
	}
}

 

'ALGORITHM' 카테고리의 다른 글

백준 11052 카드 구매하기 (Java)  (0) 2023.03.10
백준 2096 내려가기 (Java)  (0) 2023.03.09
백준 10431 줄세우기 (Java)  (0) 2023.03.08
백준 11866 요세푸스 문제 0 (Java)  (0) 2023.03.07
백준 21921 블로그 (Java)  (0) 2023.03.06