#include <iostream>
using namespace std;
int minus1 = 0;
int zero = 0;
int one = 0;
bool is_same1(int **paper, int N, int x, int y) {
int first_num = paper[x][y];
for (int i = x; i < x+N; i++) {
for (int j = y; j < y+N; j++) {
if (first_num != paper[i][j]) return false;
}
}
return true;
}
int divide_N_count(int **paper, int N, int x, int y) {
if (is_same1(paper, N, x, y)) {
if (paper[x][y] == -1) minus1++;
else if (paper[x][y] == 0) zero++;
else one++;
return 0;
}
for (int i = x; i < x+N; i = i+(N/3)) {
for (int j = y; j < y+N; j = j + (N / 3)) {
divide_N_count(paper, N / 3, i, j);
}
}
}
int main() {
//입력
int N;
cin >> N;
int **paper = new int*[N];
for (int i = 0; i < N; i++) {
paper[i] = new int[N];
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cin >> paper[i][j];
}
}
//실행
divide_N_count(paper, N, 0, 0);
//출력
cout << minus1 << endl;
cout << zero << endl;
cout << one << endl;
}
'컴퓨터 > 문제 풀기' 카테고리의 다른 글
백준 16955번 오목, 이길 수 있을까? (0) | 2019.05.20 |
---|---|
10799번 쇠막대기 (0) | 2019.05.13 |
2413번 비슷한 순열 (1) | 2019.05.13 |
2309번 일곱 난쟁이 (0) | 2019.05.13 |
백준 2688번 줄어들지 않아 (0) | 2019.05.13 |