티스토리 뷰

PS

[백준] 4848번 집합 숫자 표기법 C++

Eastplanet 2022. 6. 25. 09:30

문제 출처: https://www.acmicpc.net/problem/4848

 

4848번: 집합 숫자 표기법

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 두 줄로 이루어져 있고, 집합 숫자 표기법으로 나타낸 수가 주어진다. 두 수의 합은 항상 15보다 작거나 같다.

www.acmicpc.net

아래의 식을 통해서 다음 값을 구할수 있다.

string next = prev;

next[next.size()-1] = ',';

next += prev;

next += "}"; 

#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include <string>

using namespace std;

string arr[16];

string join(string a) {
    string temp = a;
    temp[temp.size() - 1] = ',';
    temp += a;
    temp += "}";
    return temp;
}

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

    arr[0] = "{}";
    arr[1] = "{{}}";
    
    for (int i = 2; i < 16; i++) {
        arr[i] = join(arr[i - 1]);
    }

    int T;
    cin >> T;
    while (T--) {
        string a, b;
        cin >> a >> b;
        int anum, bnum;
        for (int i = 0; i < 16; i++) {
            if (arr[i] == a)anum = i;
            if (arr[i] == b)bnum = i;
        }
        cout << arr[anum + bnum] << '\n';
    }
    
}

'PS' 카테고리의 다른 글

[백준] 9660번 돌 게임 6  (0) 2022.06.25
[백준] 9658번 돌 게임 4  (0) 2022.06.25
[백준] 11722번 가장 긴 감소하는 부분 수열  (0) 2022.06.25
[백준] 12920번 평범한 배낭 2 C++  (0) 2022.06.24
[백준] 2780번 비밀번호 C++  (0) 2022.06.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함