#문제
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수
www.acmicpc.net
#풀이 & 학습한 내용
소스코드의 16~22행에 해당하는 Optimal substructure를 통해 for문을 구성합니다. 마지막에 오는 원소가 i일 때 그 직전에 오는 수가 0부터 i까지 가능함을 이용합니다. dp[i][j]를 i번째수가 j일때의 경우의 수라 할때 dp[i][j]는 dp[i-1][0]부터 dp[i-1][j]까지의 합입니다.
#소스코드
|
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
|
#include<iostream>
#include<algorithm>
using namespace std;
long long dp[1002][10];
int main(void) {
int N;
cin >> N;
for (int i = 0; i <= 9; i++) {
dp[1][i] = 1;
}
for (int i = 2; i <= N; i++) {
for (int j = 0; j <= 9; j++) {
dp[i][j] = 0;
for (int k = 0; k <= j; k++)
dp[i][j] += dp[i-1][k] % 10007;
}
}
long long sum = 0;
for (int i = 0; i <= 9; i++) {
sum += dp[N][i];
}
cout << sum % 10007 << '\n';
}
|
cs |
github.com/HoYoungChun/BOJ_algorithm/blob/master/Dynamic_Programming/BOJ_11057.cpp
HoYoungChun/BOJ_algorithm
Baekjoon Online Judge problem solving by C++. Contribute to HoYoungChun/BOJ_algorithm development by creating an account on GitHub.
github.com
'Algorithm > Dynamic Programming' 카테고리의 다른 글
| [C++] 백준 2156번 : 포도주 시식 (S1) (0) | 2020.11.13 |
|---|---|
| [C++] 백준 9465번 : 스티커 (S2) (0) | 2020.11.12 |
| [C++] 백준 1309번 : 동물원 (S1) (0) | 2020.11.11 |
| [C++] 백준 1149번 : RGB거리 (S1) (0) | 2020.11.11 |
| [C++] 백준 9252번 : LCS 2 (G5) (0) | 2020.11.11 |