BOJ 1780 종이의 개수

1 개요[ | ]

BOJ 1780 종이의 개수


2 C++[ | ]

#include <iostream>
using namespace std;

int N;
int A[2187][2187];
int sum[3];

void solve(int x, int y, int size) {
    int first = A[x][y];
    for(int i=y; i<y+size; i++) {
        for(int j=x; j<x+size; j++) {
            if(A[j][i] != first) {
                int newsize = size / 3;
                solve(x, y, newsize);
                solve(x+newsize, y, newsize);
                solve(x+newsize+newsize, y, newsize);
                solve(x, y+newsize, newsize);
                solve(x+newsize, y+newsize, newsize);
                solve(x+newsize+newsize, y+newsize, newsize);
                solve(x, y+newsize+newsize, newsize);
                solve(x+newsize, y+newsize+newsize, newsize);
                solve(x+newsize+newsize, y+newsize+newsize, newsize);
                return;
            }
        }
    }
    sum[first+1]++;
}

int main() {
    cin >> N;
    for(int i=0; i<N; i++) {
        for(int j=0; j<N; j++) {
            cin >> A[j][i];
        }
    }
    solve(0, 0, N);
    cout << sum[0] << '\n';
    cout << sum[1] << '\n';
    cout << sum[2] << '\n';
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}