반응형
문제 출처
백준 온라인 저지
https://www.acmicpc.net/problem/11057
11057번: 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수
www.acmicpc.net
문제
문제 입 / 출력
풀이
DP를 활용해서 푼다
i 는 오르막 수의 길이를 나타내고, j는 오르막수의 끝나는 수를 나타낼 경우
- dp[i][j] = dp[i - 1][0] + dp[i - 1][1] + … + dp[i - 1][j - 1] + dp[i - 1][j]
로 식을 사용해서 표현할 수 있다
코드
#include <iostream>
using namespace std;
int dp[1001][11];
const int mod = 10007;
int main() {
int n;
long long result = 0;
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++)
for (int k = 0; k <= j; k++) {
dp[i][j] += dp[i - 1][k];
dp[i][j] %= mod;
}
for (int i = 0; i <= 9; i++) {
result += dp[n][i];
}
cout << result % mod << "\n";
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[C++] BOJ 11053 가장 긴 증가하는 부분 수열 (0) | 2022.01.01 |
---|---|
[C++] BOJ 2193 이친수 (0) | 2021.12.29 |
[C++] BOJ 10844 쉬운 계단 수 (0) | 2021.12.29 |
[C++] BOJ 9095 1, 2, 3 더하기 (0) | 2021.12.28 |
[C++] BOJ 11726번 2*N 타일링 2 (0) | 2021.12.28 |