ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 1780] 종이의 개수
    백준/완전탐색 and 분할정복 2023. 3. 10. 13:16

    항상 정사각형으로 나눠지고

    크기가 1만 아니면 무조건 9개 3x3형태로 나누므로

     

    00 03 06

    30 33 36

    60 63 66

     

    이렇게 각 종이의 시작점으로 구별하고

    위 점들에 대해 또 다시 재귀적으로 solve를 해주면 된다

     

    한개의 종이가 될 수 있는지는

    브루트포스로 직접 다 확인하는 수 밖에 없는듯

    어차피 N<=3^7이라 1초 안에는 돌아가는거 같음

     


    import java.io.*;
    import java.util.*;
    
    public class Main {
    
        static int[][] map = new int[2188][2188];
        static int[] ans = new int[3];
    
        static void solve(int starty,int startx, int size){
            int cur = map[starty][startx];
            boolean flag = true;
    
            for(int y=starty;y<starty+size;y++){
                for(int x=startx;x<startx+size;x++){
                    if(map[y][x]!=cur){
                        flag = false;
                        break;
                    }
                }
                if(!flag) break;
            }
    
            if(flag) ans[cur+1]++;
            else{
                int newsize = size/3;
                for(int i=0;i<3;i++){
                    for(int k=0;k<3;k++){
                        solve(starty+i*newsize, startx+k*newsize, newsize);
                    }
                }
            }
    
        }
    
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(br.readLine());
    
            for(int i=1;i<=N;i++){
                String[] s = br.readLine().split(" ");
                for(int k=1;k<=N;k++){
                    map[i][k] = Integer.parseInt(s[k-1]);
                }
            }
    
            solve(1,1,N);
    
            StringBuilder sb = new StringBuilder();
            for(int i=0;i<3;i++) sb.append(ans[i]).append("\n");
            System.out.println(sb);
        }
    }

    '백준 > 완전탐색 and 분할정복' 카테고리의 다른 글

    [백준 1074] Z  (0) 2024.01.13
    [백준 2630] 색종이 만들기  (0) 2024.01.12
    [백준 2531] 회전 초밥  (0) 2023.03.26
    [백준 16974] 레벨 햄버거  (0) 2023.03.24
    [백준 14601] 샤워실 바닥 깔기 (Large)  (1) 2023.03.10