알고리즘/백준
[백준/C,C++] 1992번: 쿼드트리
이민훈
2021. 3. 17. 05:10
1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또
www.acmicpc.net
[백준/C,C++] 2630번: 색종이 만들기
www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터..
hackids.tistory.com
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;
}