본문 바로가기
알고리즘/백준

[백준/C,C++] 1992번: 쿼드트리

by 이민훈 2021. 3. 17.

www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또

www.acmicpc.net

hackids.tistory.com/49

 

[백준/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;
}

댓글