#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
int n;
string s;
char a[101][101];
string quard(int y, int x, int size){
if(size == 1) return string(1, a[y][x]);
char b = a[y][x];
string ret = "";
bool flag = 0;
for(int i = y; i < y+size; i++){
for(int j = x; j < x+size; j++){
if(b != a[i][j]){
ret += '(';
ret += quard(y, x, size/2);
ret += quard(y, x+size/2, size/2);
ret += quard(y+size/2, x, size/2);
ret += quard(y+size/2, x+size/2, size/2);
ret += ')';
return ret;
}
}
}
return string(1, a[y][x]);
}
int main(){
cin >> n;
for(int i = 0; i <n; i++){
for(int j = 0; j < n; j++){
cin >> a[i][j];
}
}
cout << quard(0,0, n) << '\n';
return 0;
}
재귀함수라는 부분을 캐치했지만 어떻게 반복을 시켜야할지 감이 잘 오지 않았다.
막상 로직이 생각보다는 간단했지만 쉽게 생각해내기는 어렵다.
이게 실버 1이라니 믿기지가 않았다...