문제
접근 방식
현재 종이 안의 값이 모두 일치하지 않으면 9분할한다.
현재 종이 안의 값이 모두 일치하면 그 값을 카운팅 한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_1780 {
	
	static int[] cnt;
	static int[][] papers;
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		papers = new int[N][N];
		
		for(int i=0;i<N;i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			for(int j=0;j<N;j++) {
				papers[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		cnt = new int[3];
		
		divide(0,0,N);
		for(int i=0;i<3;i++) {
			System.out.println(cnt[i]);
		}
	}
	
	public static void divide(int r, int c, int size) {
		
		boolean isOne = true;
		
		for(int i=r;i<r+size;i++) {
			for(int j=c;j<c+size;j++) {
				if(papers[i][j] == papers[r][c]) continue;
				isOne = false;
				break;
			}
		}
		if(isOne) {
			cnt[papers[r][c]+1]++;
			return;
		}
		
		divide(r,c,size/3);
		divide(r+size/3,c,size/3);
		divide(r+size*2/3,c,size/3);
		divide(r,c+size/3,size/3);
		divide(r+size/3,c+size/3,size/3);
		divide(r+size*2/3,c+size/3,size/3);
		divide(r,c+size*2/3,size/3);
		divide(r+size/3,c+size*2/3,size/3);
		divide(r+size*2/3,c+size*2/3,size/3);
	}
}