본문 바로가기
알고리즘/백준 문제풀이

백준 [자바 java] 11057번 : 오르막 수

by 잔디🌿 2022. 8. 8.

    안녕하세요! 오랜만이네요 며칠 동안 동아리 활동 때문에 며칠 동안 못했더니 그새 감을 조금 잃은 거 같아서 슬픔니다ㅜㅜ

    이 문제를 보자마자 공식이 있겠구나! 수학 문제구나! 생각했지만 금방 예전에 풀었던 계단 문제와 유사하다는 것을 알게 되었습니다. 정말 비슷하더라고요

    자릿수를 입력받고 그 자릿수에서 나올 수 있는 오름차순의 개수를 구하는 문제입니다. 

    import java.io.*;
    import java.util.*;
    
    
    
    class Main {
    	
    	
    	
    	public static void main(String[] arg) throws IOException {
    		
    		BufferedReader br = new BufferedReader(new InputStreamReader (System.in));
    		int n = Integer.parseInt(br.readLine());
    		
    		int i, j;
    		int cnt = 0;
    		//숫자  순서
    		int[][] dp = new int[10][n+1];
    		
    		for(i = 0;i<=9;i++) {
    			dp[i][1] = 1;
    		}
    		
    		int k;
    		
    		for(i = 2;i<=n;i++) {
    			for(j = 0;j<=9;j++) {
    				for(k = j;k<=9;k++) {
    					dp[j][i] += dp[k][i-1];
    					dp[j][i]%=10007;
    				}
    			}
    		}
    		
    		for(i = 0;i<=9;i++) {
    			cnt += dp[i][n];
    			cnt%=10007;
    		}
    		
    		System.out.println(cnt);
    		
    }
    
    }

    dp를 이차원 배열로 만들고 앞에는 숫자, 뒤에는 자릿 수 이런식으로 넣었습니다. 그렇게 해서 차곡차곡 더해갔습니다(나머지는 중간중간 해주는거 필수!)

    실수한 것: 이차원배열 앞 뒤 바뀌어서 만들었다. 물론 틀린 건 아니지만 매우 헷갈렸다.

    알아야 할 것: 없따.

    다른 사람 코드랑 다른 점: 없따.