#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int N = 0;
bool vec[65][65] = {};
bool vecVisit[65][65] = {};
std::string ans = {};
void BFS(int iX, int iY, int iSize)
{
bool bCheck = vec[iX][iY];
for (int i = iX; i < iX + iSize; ++i)
{
for (int j = iY; j < iY + iSize; ++j)
{
if (bCheck != vec[i][j])
{
ans += '(';
BFS(iX, iY, iSize * 0.5);
BFS(iX,iY + iSize * 0.5, iSize * 0.5);
BFS(iX + iSize * 0.5, iY, iSize * 0.5);
BFS(iX + iSize * 0.5,iY + iSize * 0.5, iSize * 0.5);
ans += ')';
return;
}
}
}
if (!bCheck)
ans += '0';
else
ans += '1';
}
int main()
{
std::cin >> N;
for (int i = 0; i < N; ++i)
{
std::string s = {};
std::cin >> s;
for (int j = 0; j < N; ++j)
{
vec[i][j] = s[j] - '0';
}
}
BFS(0, 0, N);
std::cout << ans;
return 0;
}
4개로 분할해서 풀어야합니다.
들어갈 때 ( 열고 나오기 전에 ) 닫아줍니다.
이름이 분할 Div로 지었어야 했던거 같습니다.
'오늘의 알고리즘' 카테고리의 다른 글
[C++] 백준 5545 IOIOI (0) | 2022.09.14 |
---|---|
[C++] 백준 5430 AC (0) | 2022.09.13 |
[C++] 백준 11726 2xn 타일링 (0) | 2022.09.10 |
[C++] 백준11279 최대 힙 (0) | 2022.09.07 |
[C++]백준 9095 1, 2, 3 더하기 (0) | 2022.09.06 |