이문제는 숫자가 15까지 밖에 없어서
모든 수의 집합에 관련된 문자열을 string 배열에 담은뒤
문자열과 매치 되는 수를 구하고 그 수의 합을 다시 string으로 반환해서 얻어내는 과정으로 했다.
코드는 다음과 같다.
//집합 숫자 표기법
#include <iostream>
using namespace std;
int main(void)
{
int T = 0;
string DP[16];
string str1;
string str2;
cin >> T;
DP[0] = "{}";
DP[1] = "{{}}";
DP[2] = "{{},{{}}}";
for(int i = 3; i < 16; i++)
{
DP[i] = '{';
for(int j = 0; j < i; j++)
{
DP[i] += DP[j] + ",";
}
DP[i].at(DP[i].size()-1) = '}';
}
for(int t = 0; t < T; t++)
{
cin >> str1 >> str2;
int num1 = 0, num2 = 0;
for(int i = 0; i < 16; i++)
{
if(str1 == DP[i])
num1 = i;
if(str2 == DP[i])
num2 = i;
}
cout << DP[num1+num2] << endl;
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[백준 2231] 분해합 (0) | 2020.11.01 |
---|---|
[백준 19598] 최소 회의실 개수 (1) | 2020.11.01 |
[백준 16953] A > B (2) | 2020.10.16 |
[백준 11729] 하노이 탑 이동 순서 (0) | 2020.10.15 |
[백준 2979] 트럭 주차 (0) | 2020.10.14 |