https://www.acmicpc.net/problem/1992
1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또
www.acmicpc.net
해석 및 팁
이 문제는 백준 2630 색종이 만들기 문제와 상당히 유사한 문제이며 동일하게 분할정복과 재귀를 활용하면 되는 문제입니다. 다만 차이점은 괄호를 더해주어야 한다는 점입니다.
Java 코드
import java.util.Scanner;
public class Main {
static int col;
static int[][] arr;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
arr = new int[n][n];
for(int i = 0; i < n; i++) {
String str = sc.next();
for(int j = 0; j < n; j++) arr[i][j] = str.charAt(j) - '0';
}
div(0, 0, n);
System.out.println(sb);
}
public static void div(int x, int y, int n) {
for(int i = x; i < x + n; i++) {
for(int j = y; j < y + n; j++) {
col = arr[x][y];
if(col != arr[i][j]) {
sb.append("(");
div(x, y, n / 2);
div(x, y + n / 2, n / 2);
div(x + n / 2, y, n / 2);
div(x + n / 2, y + n /2, n / 2);
sb.append(")");
return;
}
}
}
if(col == 0) sb.append(0);
else sb.append(1);
}
}
'백준' 카테고리의 다른 글
백준 11057 오르막 수(Java) (0) | 2023.02.17 |
---|---|
백준 7562 나이트의 이동(Java) (0) | 2023.02.16 |
백준 9465 스티커(Java) (0) | 2023.02.16 |
백준 2468 안전 영역(Java) (0) | 2023.02.16 |
백준 11052 카드 구매하기(Java) (0) | 2023.02.16 |