문제

코드
import java.io.*;
public class q1780 {
static int minus = 0;
static int zero = 0;
static int plus = 0;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[][] screen = new int[N][N];
for(int i=0; i<N; i++) {
String[] input = br.readLine().split(" ");
for(int j=0; j<N; j++) {
screen[i][j] = Integer.parseInt(input[j]);
}
}
quadTree(screen, N, 0, 0, bw);
bw.write(minus + "\n" + zero + "\n" + plus);
bw.flush();
}
public static void quadTree(int[][] screen, int size, int startA, int startB, BufferedWriter bw) throws IOException {
if(size == 1) {
if(screen[startA][startB] == -1) minus++;
else if(screen[startA][startB] == 1) plus++;
else zero++;
}
else {
int tempMinus = 0, tempZero = 0, tempPlus = 0;
for(int i=startA; i<startA+size; i++) {
for(int j=startB; j<startB+size; j++) {
if(screen[i][j] == -1) tempMinus++;
else if(screen[i][j] == 1) tempPlus++;
else tempZero++;
}
}
if((tempPlus != 0 && tempMinus != 0) || (tempPlus != 0 && tempZero != 0) || (tempMinus != 0 && tempZero != 0)) {
for(int a=0; a<3; a++) {
for(int b=0; b<3; b++) {
quadTree(screen, size/3, startA + a*(size/3), startB + b*(size/3), bw);
}
}
}
else {
if(screen[startA][startB] == -1) minus++;
else if(screen[startA][startB] == 1) plus++;
else zero++;
}
}
}
}
좋은 글 감사합니다!