백준 - 1992번 - 쿼드트리

이상훈·2023년 5월 11일
0

1992번

import java.util.*;
import java.io.*;

public class Main {
	static int[][] board;

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(bf.readLine());

		board = new int[n][n];
		for (int i = 0; i<n; i++) {
			String line = bf.readLine();
			for (int j = 0; j<n; j++) {
				board[i][j] = line.charAt(j)-'0';
			}
		}

		partition(0, 0, n);
	}

	static void partition(int row, int col, int size) {

		if (numberCheck(row, col, size)) {
			System.out.print(board[row][col]);

			return;
		}
		
		int newSize = size / 2;

		System.out.print("(");

		partition(row, col, newSize);
		partition(row, col + newSize, newSize);

		partition(row + newSize, col, newSize);
		partition(row + newSize, col + newSize, newSize);

		System.out.print(")");

	}

	static boolean numberCheck(int row, int col, int size) {
		int number = board[row][col];

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

}

풀이


9개로 나눈거 한번푸니까 사분면은 쉬웠다.

특이한 점은 괄호로 묶어주는 것을 구현해야하는데 재귀시작하기 전과 후에 넣어주면 된다.

0개의 댓글