recursion 탐색 단계에서 현재 범위의 배열이 같은 숫자로 이루어지지 않은 경우
1. 결과 벡터에'(' push
2. 4범위로 분할하여 recursion
3. 결과 벡터에')' push
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int a[64][64]={0,};
vector<char> v;
void solve(int x, int y, int n){
int target = a[x][y];
for (int i = x; i < x + n; i++)
{
for (int j = y; j < y + n; j++){
if(target != a[i][j]){
v.push_back('(');
solve(x, y, n / 2);
solve(x, y + n / 2, n / 2);
solve(x + n / 2, y, n / 2);
solve(x + n / 2, y + n / 2, n / 2);
v.push_back(')');
return;
}
}
}
char temp = (char)target;
v.push_back(temp);
return;
}
int main(){
int n;
string str;
cin >> n;
for (int i = 0; i < n; i++){
cin >> str;
for (int j = 0; j < n; j++){
a[i][j] = str[j];
}
}
solve(0,0,n);
for (int i = 0; i < v.size(); i++){
cout << v[i];
}
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준] 5430번 AC c++ (0) | 2022.12.10 |
---|---|
[백준] 10026번 적록색양 c++ (0) | 2022.11.30 |
[백준] 4485번 녹색 옷 입은 애가 젤다지? c++ (0) | 2022.11.28 |
[백준] 1780번 종이의 개수 c++ (0) | 2022.11.27 |
[백준] 1676번 팩토리얼 0의 개수 c++ (0) | 2022.11.27 |