#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

+ Recent posts