풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int one = 0; // -1 개수
static int two = 0; // 0 개수
static int three = 0; // 1 개수
public static void main(String[] args) throws NumberFormatException, IOException {
int[][] arr;
String[] arr2;
String str = "";
BufferedReader br = new BufferedReader ( new InputStreamReader (System.in));
int num = Integer.parseInt(br.readLine());
boolean check = true; // 같은 값인지 체크
int checkNum = 2; // 첫 값 등록 변수
arr = new int[num][num];
// 배열에 입력받기
for(int i=0; i<num; i++) {
str = br.readLine();
arr2 = str.split(" ");
for(int j=0; j<num; j++) {
arr[i][j] = Integer.parseInt(arr2[j]);
if(checkNum == 2) {
checkNum = arr[i][j];
}else {
if(checkNum != arr[i][j]) {
check = false;
}
}
}
}
if(check != true) {
Search(arr, num);
}else {
if(checkNum == 0){
two += 1;
}else if(checkNum == 1){
three += 1;
}else{
one += 1;
}
}
System.out.println(one);
System.out.println(two);
System.out.println(three);
}
private static void Search(int[][] arr, int size) {
int[][] smallArr; // 나눈 배열
int count = 0;
int x = 0, y = 0; // 행 시작점, 열 시작점
int a = 0, b = 0; // 나눈 배열 인덱스
boolean check = true; // 같은 값인지 체크
int checkNum = 2; // 첫 값 등록 변수
if(size > 3) {
int smallSize = size/3;
smallArr = new int[smallSize][smallSize];
// 나눈 배열 생성하기
while(count < 9) {
count++;
check = true;
checkNum = 2;
a = 0;
for(int i=x; i<x+smallSize; i++) {
for(int j=y; j<y+smallSize; j++) {
smallArr[a][b] = arr[i][j];
if(checkNum == 2) {
checkNum = arr[i][j];
}else {
if(checkNum != arr[i][j]) {
check = false;
}
}
b++;
}
a++;
b = 0;
}
if(check != true) {
Search(smallArr, smallSize);
}else {
if(checkNum == 0){
two += 1;
}else if(checkNum == 1){
three += 1;
}else{
one += 1;
}
}
if(count%3 == 0) {
x += smallSize;
y = 0;
}else {
y += smallSize;
}
}
}else {
for(int i=0; i<3; i++){
for(int j=0; j<3; j++){
if(arr[i][j] == 0){
two++;
}else if(arr[i][j] == 1){
three++;
}else{
one++;
}
}
}
}
}
}
'코딩 문제 > 백준' 카테고리의 다른 글
백준 - 2890번 (0) | 2021.03.15 |
---|---|
백준 - 2504번 (0) | 2021.03.15 |
백준 - 1769번 (0) | 2021.03.15 |
백준 - 1074번 (0) | 2021.03.15 |
백준 - 1059번 (0) | 2021.03.15 |