🔺 문제
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
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 2133번: 타일 채우기 (0) | 2023.08.31 |
---|---|
[백준/JAVA] 2529번: 부등호 (0) | 2023.08.31 |
[백준/JAVA] 1309번: 동물원 (0) | 2023.08.29 |
[백준/JAVA] 11931번: 수 정렬하기 4 (0) | 2023.08.29 |
[백준/JAVA] 10974번: 모든 순열 (0) | 2023.08.27 |