코테/백준

[백준/JAVA] 11057번: 오르막 수

imname1am 2023. 8. 30. 16:49
반응형

🔺 문제

 

11057번: 오르막 수

오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수

www.acmicpc.net

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.*;
import java.io.*;
 
public class Main {
    static final int MOD = 10007;
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int N = Integer.parseInt(br.readLine());
        
        // dp[N][k] : N자리 수 중 일의 자리 숫자가 k인 경우의 수
        long[][] dp = new long[N + 1][10];
        Arrays.fill(dp[1], 1); // 한 자리 수의 경우, dp값이 모두 1
        
        for(int i = 2 ; 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];   // 🔔 모든 경우의 수 다 더하기 (이전 자리수 N-1에서의 j부터 마지막 9까지의 합)
                    dp[i][j] %= MOD;
                }
            }
        }
        
        long sum = 0;
        for(int i = 0 ; i < 10 ; i++) {
            sum += dp[N][i];
        }
        System.out.println(sum % MOD);
    }
}
cs
✅ 해결 아이디어
✔ DP
- DP[ i ][ j ] : i 자리 수 중 일의 자리 숫자가 j인 경우의 수
- 🔔 0 ~ 9까지의 각 숫자(j)에서 만들 수 있는 오르막수 : 이전 자릿수 N - 1에서의 j부터 마지막 9까지의 합

 

💥 유의사항

• dp 계산 후에도 모듈러 연산해줘야 함 ⇨ 자릿수가 40만이 넘어가면 한참 커지므로 (참고)

 

 


🔺 다른 풀이들

- dp[ i ][ j ] = dp[ i ][ j - 1 ] + dp[ i  - 1 ][ j ]로 dp 배열을 채우셨다.

 

[백준 11057] 오르막 수 (자바)

백준 11057번 오르막 수 (자바) 출처 www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2

hidelookit.tistory.com

 

(JAVA) 백준 11057번 : 오르막 수

https://www.acmicpc.net/problem/11057https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 22

maivve.tistory.com


💬 느낀 점

점화식을 못 찾겠으면 표로 그림이라도 그려서 규칙을 찾아봐야겠다,,,ㅠ

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

 

[백준 - 11057번] 오르막 수 - 자바(JAVA) 정리 및 해설

이번에 풀어볼 문제는 DP문제인 오르막 수입니다. 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 367

sundries-in-myidea.tistory.com

 

 

[백준 11057] 오르막 수 (자바)

백준 11057번 오르막 수 (자바) 출처 www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2

hidelookit.tistory.com

 

 

 

[백준] 11057번 오르막 수 - Java, 자바

실버 1 https://www.acmicpc.net/problem/11057테이블 정의하기Di = 수의 길이 i일 때, 오르막 수의 개수점화식 찾기 N = 1 한자리 수일 경우, 0~9경우 10가지N = 2 두자리 수일 경우, 0로 시작할 때, 10가지1로 시

velog.io

 

반응형