본문 바로가기
알고리즘 & 자료구조/백준

백준 1780

by 신재권 2022. 4. 12.
package baekjoon;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main1780 {

   public static int N;
   public static int[][] map;
   public static int minusOne = 0;
   public static int zero = 0;
   public static int one = 0;

   public static void main(String[] args) throws Exception {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      StringTokenizer st;
      N = Integer.parseInt(br.readLine());
      map = new int[N][N];

      for (int i = 0; i < N; i++) {
         st = new StringTokenizer(br.readLine());
         for (int j = 0; j < N; j++) {
            map[i][j] = Integer.parseInt(st.nextToken());
         }
      }
      paper(0, 0, N);
      System.out.println(minusOne);
      System.out.println(zero);
      System.out.println(one);

   }

   public static void paper(int y, int x, int size) {
      if (isCheck1780(y, x, size)) {
         int var = map[y][x];
         if (var == -1) {
            minusOne++;
         } else if (var == 0) {
            zero++;
         } else if (var == 1) {
            one++;
         }
         return;
      }

      int nSize = size / 3;

      paper(y, x, nSize);
      paper(y, x + nSize, nSize);
      paper(y, x + (nSize * 2), nSize);

      paper(y+nSize, x, nSize);
      paper(y+nSize, x + nSize, nSize);
      paper(y+nSize, x + (nSize * 2), nSize);

      paper(y+(nSize*2), x, nSize);
      paper(y+(nSize*2), x + nSize, nSize);
      paper(y+(nSize*2), x + (nSize * 2), nSize);
      return;
   }

   public static boolean isCheck1780(int y, int x, int size) {
      int var = map[y][x];
      for (int i = y; i < y + size; i++) {
         for (int j = x; j < x + size; j++) {
            if (var != map[i][j]) {
               return false;
            }
         }
      }
      return true;
   }

}

'알고리즘 & 자료구조 > 백준' 카테고리의 다른 글

백준 14888  (0) 2022.05.19
백준 15650  (0) 2022.05.19
백준 17829  (0) 2022.04.11
백준 2630  (0) 2022.04.10
백준 2798_1  (0) 2022.03.22