2630번: 색종이 만들기와 아주 비슷한 문제인데요. 함수 안에서 규칙에 맞게 문자열만 출력해주면 되는 문제입니다.
#include<iostream>
using namespace std;
int n;
string s[64];
void quad(int x, int y, int len)
{
if (len == 0) return;
int value = 0;
for (int i = y; i < y + len; i++) {
for (int j = x; j < x + len; j++) {
if (s[i][j] == '1') value++;
}
}
if (value == len * len) {
cout << "1";
return;
}
else if (value == 0) {
cout << "0";
return;
}
else {
int half = len / 2;
cout << "(";
quad(x, y, half);
quad(x + half, y, half);
quad(x, y + half, half);
quad(x + half, y + half, half);
cout << ")";
}
return;
}
int main(void)
{
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s[i];
}
quad(0, 0, n);
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준/C,C++] 1629번: 곱셈 (0) | 2021.03.25 |
---|---|
[백준/C,C++] 1780번: 종이의 개수 (0) | 2021.03.19 |
[백준/C,C++] 2630번: 색종이 만들기 (0) | 2021.03.17 |
[백준/C,C++] 5430번: AC (0) | 2021.03.16 |
[백준/C,C++] 1021번: 회전하는 큐 (0) | 2021.03.16 |
댓글