1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또
www.acmicpc.net
package Recursive;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Baekjoon_1992_쿼드트리 {
static int N;
static char[][] arr;
static StringBuilder sb;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
arr = new char[N][N];
for(int i = 0; i < N; i++) {
String str = br.readLine();
for(int j = 0; j < N; j++) {
arr[i][j] = str.charAt(j);
}
}
divArr(0,0,N);
System.out.println(sb.toString());
}
private static void divArr(int row, int col, int size) {
if(checkColor(row, col, size)) {
sb.append(arr[row][col]);
}
else {
int newSize = size/2;
sb.append("(");
divArr(row, col, newSize);
divArr(row, col+newSize, newSize);
divArr(row+newSize, col, newSize);
divArr(row+newSize, col+newSize, newSize);
sb.append(")");
}
}
private static boolean checkColor(int startRow, int startCol, int size) {
char first = arr[startRow][startCol];
for(int i = startRow; i < startRow + size; i++) {
for(int j = startCol; j < startCol + size; j++) {
if(arr[i][j] != first)
return false;
}
}
return true;
}
}'알고리즘 > BAEKJOON' 카테고리의 다른 글
| 11399 ATM (0) | 2021.08.24 |
|---|---|
| 13305 주유소 (0) | 2021.08.23 |
| 10094 별 찍기 - 19 (0) | 2021.08.09 |
| 5568 카드 놓기 (0) | 2021.08.07 |
| 2630 색종이 만들기 (0) | 2021.08.04 |