BOJ 1780 종이의 개수

Jmnote (토론 | 기여)님의 2023년 10월 15일 (일) 10:51 판 (새 문서: ==개요== {{BOJ|단계=26}} ==C++== <syntaxhighlight lang='cpp'> #include <iostream> using namespace std; int N; int A[2187][2187]; int sum[3]; void solve(int x, int y, int size)...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

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 }}