#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

+ Recent posts