[BOJ 1992] ์ฟผ๋“œํŠธ๋ฆฌ

 

1. ๋ฌธ์ œ : https://www.acmicpc.net/problem/1992

 

2. ํ’€์ด

ํฐ -> ์ž‘์€ ์ˆœ์„œ๋Œ€๋กœ ์••์ถ•์ด ๊ฐ€๋Šฅํ•œ์ง€ ์ฒดํฌํ•˜๋Š”์ง€๊ฐ€ ์ค‘์š”ํ–ˆ๋‹ค!

 

3. ์ฝ”๋“œ

package baekjoon;

import java.util.Scanner;

public class ์ฟผ๋“œํŠธ๋ฆฌ {

    public static int[][] img;		// ํ‘๋ฐฑ ์ด๋ฏธ์ง€
    public static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int N = in.nextInt();
        img = new int[N][N];

        for(int i = 0; i < N; i++) {
            String str = in.next();

            for(int j = 0; j < N; j++) {
                img[i][j] = str.charAt(j) - '0';
            }
        }

        QuadTree(0, 0, N);
        System.out.println(sb);
    }

    public static void QuadTree(int x, int y, int size) {

        // ์••์ถ•์ด ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ์ƒ‰์ƒ์œผ๋กœ ์••์ถ•ํ•ด์ค€๋‹ค.
        if(isPossible(x, y, size)) {
            sb.append(img[x][y]);
            return;
        }

        int newSize = size / 2;	// ์••์ถ•์ด ๋ถˆ๊ฐ€๋Šฅ ํ•  ๊ฒฝ์šฐ ์‚ฌ์ด์ฆˆ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•œ๋‹ค.

        sb.append('(');	// ๊ฐ ๋ ˆ๋ฒจ(depth)์—์„œ ์—ฌ๋Š”๊ด„ํ˜ธ๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.

        QuadTree(x, y, newSize);						// ์™ผ์ชฝ ์œ„
        QuadTree(x, y + newSize, newSize);				// ์˜ค๋ฅธ์ชฝ ์œ„
        QuadTree(x + newSize, y, newSize);				// ์™ผ์ชฝ ์•„๋ž˜
        QuadTree(x + newSize, y + newSize, newSize);	// ์˜ค๋ฅธ์ชฝ ์•„๋ž˜

        sb.append(')');	// ํ•ด๋‹น ๋ ˆ๋ฒจ์ด ๋๋‚˜๋ฉด ๋‹ซ๋Š”๊ด„ํ˜ธ๋„ ๋‹ซ์•„์ค€๋‹ค.


    }

    // ์••์ถ•์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ•ด๋‹น ๊ณต๊ฐ„์„ ์ฒดํฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
    public static boolean isPossible(int x, int y, int size) {
        int value = img[x][y];

        for(int i = x; i < x + size; i++) {
            for(int j = y; j < y + size; j++) {
                if(value != img[i][j]) {
                    return false;
                }
            }
        }
        return true;
    }

}
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ๋„ค์ด๋ฒ„ ๋ฐด๋“œ์— ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ ๊ณต์œ ํ•˜๊ธฐ