거의 알고리즘 일기장

백준 11057번 _ 오르막 수 본문

알고리즘 문제풀이

백준 11057번 _ 오르막 수

건우권 2020. 5. 9. 23:27

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

 

11057번: 오르막 수

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

www.acmicpc.net

풀이방법

dp문제이며 직전에 푼 쉬운 오르막과 거의 유사한 문제다. 그냥 똑같다고 보면됨. 그러므로 생략하겠습니다.ㅎ


전체코드

#include <iostream>
#include <algorithm>

#define DIV_NUM 10007

using namespace std;
long long dp[10][1001];
int N;

void dpInit()
{
	for (int i = 0; i <= 9; i++)
		for (int j = 0; j <= N; j++)
			dp[i][j] = -1;
}

long long getCount(int number, int n)
{
	long long& ret = dp[number][n];
	if (ret != -1) return ret;

	if (n == N)
		return 1;

	ret = 0;
	for (int i = number; i <= 9; i++)
		ret = (ret + getCount(i, n + 1)%DIV_NUM);
	return ret%= DIV_NUM;
}

void solve()
{
	long long cnt = 0;
	for (int i = 0; i <= 9; i++)
		cnt = (cnt + getCount(i, 1))%DIV_NUM;
	cout << cnt;
}

int main()
{
	cin >> N;
	dpInit();
	solve();
	return 0;
}

후기

반응형

'알고리즘 문제풀이' 카테고리의 다른 글

백준 12865번 _ 평범한 배낭  (0) 2020.05.10
백준 11051번 _ 이항 계수2  (0) 2020.05.09
백준 10844번 _ 쉬운 계단 수  (0) 2020.05.09
백준 1699번 _ 제곱수의 합  (0) 2020.05.09
백준 2294번 _ 동전 2  (0) 2020.05.09
Comments