Hello COCOBALL!

C++ [BOJ] 백준 11507번 오르막 수 본문

BOJ

C++ [BOJ] 백준 11507번 오르막 수

coco_ball 2022. 7. 11. 16:47

https://www.acmicpc.net/problem/11057

 

11057번: 오르막 수

오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수

www.acmicpc.net


SOLUTION

점화식 : dp[i][j] += dp[i - 1][k]로 유도된다.


코드

#include <iostream>
using namespace std;

int dp[1001][10];

int main() {
	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++) {
			for (int k = j; k <= 9; k++) {
				dp[i][j] += dp[i - 1][k] % 10007;
			}
		}
	}
	int ans = 0;
	for (int i = 0; i <= 9; i++) {
		ans += dp[n][i];
	}
	cout << ans % 10007;
}