백준 2688 c++ : DP

magicdrill·2025년 3월 11일
0

백준 문제풀이

목록 보기
567/655

백준 2688 c++ : DP

#include <iostream>
#include <vector>

using namespace std;

long long find_answer(int n, vector<vector<long long>> &dp) {
	//n자리 수 문자열 중 오른쪽 수가 왼쪽 수보다 큰 수 개수 구하기
	long long answer = 0;
	int i;

	for (i = 0; i <= 9; i++) {
		answer += dp[n][i];
		cout << answer << " ";
	}
	cout << "\n";

	return answer;
}

int main(void) {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int T, n, i, j, k;
	vector<vector<long long>> dp(65, vector<long long>(10, 0));

	for (i = 0; i <= 9; i++) {
		dp[1][i] = 1;
	}

	for (i = 2; i <= 64; i++) {
		for (j = 0; j <= 9; j++){
			for (k = j; k <= 9; k++){
				dp[i][j] += dp[i - 1][k];
			}
		}
	}
	
	cin >> T;
	while (T--) {
		cin >> n;
		cout << find_answer(n, dp) << "\n";
	}

	return 0;
}

0개의 댓글