재귀 안쪽에서 for 문 시작과 끝 범위에 대한 생각을 꼭 해야한다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
int n;
using namespace std;
void Recursion(int x, int y,int len, vector<vector<int>>& vec)
{
bool one = true;
bool zero = true;
for (int i = x; i < x + len; ++i)
{
for (int j = y; j < y + len; ++j)
{
if (vec[i][j] == 1)
{
zero = false;
}
else if (vec[i][j] == 0)
{
one = false;
}
}
}
if (one && !zero)
{
cout << '1';
return;
}
else if (!one && zero)
{
cout << '0';
return;
}
else if (one && zero)
{
return;
}
cout << '(';
int divsize = len / 2;
Recursion(x, y, divsize, vec);
Recursion(x, y + divsize, divsize, vec);
Recursion(x + divsize, y, divsize, vec);
Recursion(x + divsize, y + divsize, divsize, vec);
cout << ')';
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n;
vector<vector<int>> vec(n, vector<int>(n, -1));
int k = 0;
for (int i = 0; i < n; ++i)
{
string str;
cin >> str;
for (int j = 0; j < str.size(); ++j)
{
vec[k][j] = str[j] - '0';
}
k++;
}
Recursion(0, 0, vec.size(), vec);
return 0;
}
'코딩 테스트' 카테고리의 다른 글
백준 17829 - 222풀링 (0) | 2024.09.09 |
---|---|
백준 2493 탑 (0) | 2024.09.09 |
백준 - 14400 편의점 2 (0) | 2024.09.03 |
백준 - 1541 잃어버린 괄호 (0) | 2024.09.03 |
백준 - 11729 하노이의 탑 (0) | 2024.08.27 |