🧫 문제 분석
✔️ 출처
📖 문제

깊이 별로 나누되 0~10까지 에 대해서 동적프로그래밍을 한다.
중요한 점
수는 0으로 시작할 수 있다는 것이다.
현재 깊이의 각 수는 이전 깊이의 현재 수부터 9까지의 개수 합을 더하면 된다.
수 \ 깊이 | 1 | 2 | 3 |
0 | 1 | 깊이 1의 0~9까지 : 10 | 깊이 2의 0~9 까지 : 55 |
1 | 1 | 깊이 1의 1~9까지 : 9 | 깊이 2의 1~9까지 : 45 |
2 | 1 | 깊이 1의 2~9까지 : 8 | 깊이 2의 2~9까지 : 36 |
잘 모르겠다면 노드로 직접 그려보면 바로 알기 쉽다.
🔅 문제 풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[][] dp = new int[n + 1][10];
Arrays.fill(dp[1], 1);
for (int i = 2; i <= n; i++) {
for (int j = 0; j < 10; j++) {
int sum = 0;
for (int k = j; k < 10; k++) {
sum += dp[i-1][k];
sum %= 10007;
}
dp[i][j] = sum;
}
}
int sum = 0;
for (int i : dp[n]) {
sum += i;
sum %= 10007;
}
bw.write(sum + "");
bw.flush();
bw.close();
}
}
❗ 오답노트 / 필요한 지식
'baekjoon > DP' 카테고리의 다른 글
백준 17070번 : 파이프 옮기기 1 [자바] (0) | 2025.03.30 |
---|---|
백준 9251번 : LCS [자바] (0) | 2025.03.29 |
백준 1149번 : RGB 거리 자바 (0) | 2024.08.26 |
백준 10844번 : 쉬운 계단 자바 (0) | 2024.08.26 |
백준 11053번 : 가장 긴 증가하는 부분 수열 자바 (0) | 2024.08.26 |