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

2021. 4. 29. 15:45알고리즘/재귀

728x90
반응형

문제: www.acmicpc.net/problem/1992

 

1992번: 쿼드트리

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

www.acmicpc.net

 

 

문제풀이

 

재귀 문제

 

 

코드

#include <iostream>

using namespace std;

string board[64];

void func(int x, int y, int n){

    bool flag = true;
    for(int i=x; i<x+n; i++){
        for(int j=y; j<y+n; j++){
            if(board[x][y] != board[i][j]){
                flag = false;
                break;
            }
        }
    }

    if(flag){
        cout<<board[x][y];
    }
    else{
        cout<<"(";
        func(x,y,n/2);
        func(x,y+n/2,n/2);
        func(x+n/2,y,n/2);
        func(x+n/2,y+n/2,n/2);
        cout<<")";
    }

}

int main(){
    ios::sync_with_stdio(false); cin.tie(nullptr);

    int n;
    cin>>n;

    for(int i=0; i<n; i++)
        cin>>board[i];

    func(0,0,n);

    return 0;
}

 

 

결과

 

 

728x90
반응형