https://www.acmicpc.net/problem/9095
#include <iostream>
#include <vector>
#include <set>
using namespace std;
vector<set<string>> dp(15);
int main() {
dp[1] = { "1" };
dp[2] = { "11","2" };
dp[3] = { "111","12","21","3" };
for (int i = 4; i < 11; i++) {
for (int k = 1; k <= i/2; k++) {
for (string s1 : dp[k]) {
for (string s2 : dp[i - k]) {
dp[i].insert(s1 + s2);
dp[i].insert(s2 + s1);
}
}
}
}
int T; cin >> T;
for (int t = 0; t < T; t++) {
int N; cin >> N;
cout << dp[N].size() << "\n";
}
return 0;
}
'전공공부 > 코딩테스트' 카테고리의 다른 글
(c++) 백준 "11727) 2xn 타일링2" (0) | 2022.06.07 |
---|---|
(c++) 백준 "9461) 파도반 수열" (0) | 2022.06.06 |
(c++) 백준 "2606) 바이러스" (0) | 2022.06.06 |
(c++) 백준 "2579) 계단 오르기" (0) | 2022.06.06 |
(c++) 백준 "1463) 1로 만들기" (0) | 2022.06.06 |