1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [S3_2630] ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ

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


public class Main {
    static StringTokenizer st;
    static int[][] arr;
    static int zero,one;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        // ์ข…์ด ํฌ๊ธฐ
        int N = Integer.parseInt(br.readLine());
        
        arr = new int[N][N];
        
        for(int i=0; i<N; i++){
            st = new StringTokenizer(br.readLine(), " ");
            for(int j=0; j<N; j++){
                arr[i][j] = Integer.parseInt(st.nextToken());
            }
        }

        // 0 ์œผ๋กœ ์ดˆ๊ธฐํ™”
        zero = 0;
        one = 0;

        go(0,0,N);

        sb.append(zero).append("\n");
        sb.append(one);

        System.out.println(sb);
    }

    static void go(int row, int col, int size){
        // ๋‹ค ๋˜‘๊ฐ™์œผ๋ฉด
        if(check(row, col, size)){
            // ๊ฐ™์€ ๊ฐ’์ด 0 ์ผ๋•Œ
            if(arr[row][col] == 0){
                zero++;
            }
            // ๊ฐ™์€ ๊ฐ’์ด 1 ์ผ๋•Œ
            else{
                one++;
            }
            return;
        }
        // ๋‹ค๋ฅด๋ฉด ์žฌ๊ท€
        else{
            size /= 2;

            // ์™ผ์ชฝ ์œ„
            go(row,col,size);

            // ์˜ค๋ฅธ์ชฝ ์œ„
            go(row,col+size,size);

            // ์™ผ์ชฝ ์•„๋ž˜
            go(row+size,col,size);

            // ์˜ค๋ฅธ์ชฝ ์•„๋ž˜
            go(row+size,col+size,size);
        }
    }


    // ๊ฐ™์€ ์ˆ˜ ์ธ์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌ
    static boolean check(int row, int col, int size){

        int first = arr[row][col];
        for(int i=row; i<row+size; i++){
            for(int j=col; j<col+size; j++){
                if(arr[i][j] != first){
                    return false;
                }
            }
        }
        return true;
    }
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

์ตœ๊ทผ์— ํ’€์—ˆ๋˜ S2_1780 ๋ฌธ์ œ์™€ ๊ฐ™์€ ์œ ํ˜•์˜ ๋ฌธ์ œ์ด๋‹ค.
๊ทธ๋ž˜์„œ ์†์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
์ด ๋ฌธ์ œ๋Š” 4๋“ฑ๋ถ„์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ์šฐ๊ฐ€ ๋” ์ ์—ˆ๋‹ค. check() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฒ”์œ„ ์•ˆ์— ๊ฐ’๋“ค์ด ๋‹ค ๊ฐ™์€ ๊ฐ’์ธ์ง€ ํ™•์ธํ•˜๊ณ  ๊ฐ™์€ ๊ฐ’์ด๋ฉด true, ๋‹ค๋ฅธ ๊ฐ’์ด๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค.
๊ทธ๋ฆฌ๊ณ  go() ๋ฉ”์„œ๋“œ๋กœ check() ๋ฅผ ํ†ตํ•ด true๋ฉด ๊ทธ ์ˆ˜๊ฐ€ 0์ธ์ง€ 1์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์นด์šดํŒ…์„ ํ•ด์คฌ๋‹ค.
๋งŒ์•ฝ false ๋ฉด 4๋“ฑ๋ถ„์„ ํ•ด์ฃผ๊ณ  ์žฌ๊ท€๋ฅผ ์‹คํ–‰ํ•˜์˜€๋‹ค. size ๋ฅผ 2๋กœ ๋‚˜๋ˆ„์–ด ๊ทธ ๊ฐ’์„ ํ†ตํ•ด go()๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•ด์ฃผ์—ˆ๋‹ค.
์ตœ๊ทผ์— ํ‘ผ ๋ฌธ์ œ์˜ ์œ ํ˜•์„ ๋‹ค์‹œ ํ’€์–ด์„œ ๋งž์ถ”๋‹ˆ ๊ธฐ๋ถ„์ด ์•„์ฃผ ์ข‹์•˜๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: