pureworld 2018. 12. 25. 20:21
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
32
33
34
#include<iostream>
#include<string>
#include<vector>
#include<cassert>
using namespace std;
 
 
string reverse(string::iterator& it) {
    char head = *it;
    ++it;
 
    if (head == 'b' || head == 'w')
        return string(1, head);
    string ul = reverse(it);
    string ur = reverse(it);
    string ll = reverse(it);
    string lr = reverse(it);
    return string("x"+ ll + lr + ul + ur;
}
 
 
 
int main() {
    int cases;
    cin >> cases;
    for (int cc = 0; cc < cases; ++cc) {
        string quadtree;
        cin >> quadtree;
        assert(quadtree.size() <= 1000);
        string::iterator it = quadtree.begin();
        string reversed = reverse(it);
        cout << reversed << endl;
    }
}
cs

문제 출처:https://algospot.com/judge/problem/read/QUADTREE


알고스팟 사이트에서 채점해서 정답이 뜨긴 했지만 책의 내용을 습득했다고 할 수가 없다. 아직 내 머리는 이런 알고리즘을 떠올리는건

상상도 안된다... 아직 멀었다.