알고리즘/백준 문제풀이
백준 [자바 java] 11057번 : 오르막 수
잔디🌿
2022. 8. 8. 23:00
안녕하세요! 오랜만이네요 며칠 동안 동아리 활동 때문에 며칠 동안 못했더니 그새 감을 조금 잃은 거 같아서 슬픔니다ㅜㅜ
이 문제를 보자마자 공식이 있겠구나! 수학 문제구나! 생각했지만 금방 예전에 풀었던 계단 문제와 유사하다는 것을 알게 되었습니다. 정말 비슷하더라고요
자릿수를 입력받고 그 자릿수에서 나올 수 있는 오름차순의 개수를 구하는 문제입니다.
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를 이차원 배열로 만들고 앞에는 숫자, 뒤에는 자릿 수 이런식으로 넣었습니다. 그렇게 해서 차곡차곡 더해갔습니다(나머지는 중간중간 해주는거 필수!)
실수한 것: 이차원배열 앞 뒤 바뀌어서 만들었다. 물론 틀린 건 아니지만 매우 헷갈렸다.
알아야 할 것: 없따.
다른 사람 코드랑 다른 점: 없따.