문제 풀이/알고스팟
알고스팟 - 쿼드 트리 뒤집기 (QUADTREE) [C++]
JJJaewon
2023. 12. 10. 17:24
반응형
이 문제의 경우 분할 정복을 이용해서 풀었다. 압축된 결과를 보여주고, 이를 상하로 뒤집은 결과를 리턴해야 하는 문제였다. x일 때는 사분면으로 나눠지게 되는데, 왼위, 오위, 왼아, 오아 네가지로 생각했을 때 상하로 뒤집게 된다면 왼아, 오아, 왼위, 오위 순서로 탐색하면 뒤집힌 결과가 나오게 된다. 이를 활용하면 쉽게 풀 수 있는 문제이다.
#include <iostream>
#include <string>
using namespace std;
int index;
string parse(string& input) {
if (input[index] == 'x') {
string present = "";
present += input[index++];
string leftUp = parse(input);
string rightUp = parse(input);
string leftDown = parse(input);
string rightDown = parse(input);
return present + leftDown + rightDown + leftUp + rightUp;
}
string present = "";
present += input[index++];
return present;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int C;
cin >> C;
for (int test = 0; test < C; test++) {
string input;
cin >> input;
index = 0;
string answer = parse(input);
cout << answer << '\n';
}
return 0;
}
반응형