https://www.acmicpc.net/problem/1992
1992번: 쿼드트리
첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또
www.acmicpc.net
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class Main {
static int[][] map;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
map = new int[N][N];
for (int i = 0; i < N; i++) {
String str = br.readLine();
for (int j = 0; j < N; j++) {
int num = str.charAt(j) - '0';
map[i][j] = num;
}
}
quadTree(N, 0, 0);
System.out.println(sb);
}
private static void quadTree(int n, int r, int c) {
if (check(n, r, c)) {
sb.append(map[r][c]);
return;
} else {
sb.append("(");
quadTree(n / 2, r, c);
quadTree(n / 2, r, c + n / 2);
quadTree(n / 2, r + n / 2, c);
quadTree(n / 2, r + n / 2, c + n / 2);
sb.append(")");
}
}
private static boolean check(int n, int r, int c) {
// 압축 가능한지 확인
int num = map[r][c];
for (int i = r; i < r + n; i++) {
for (int j = c; j < c + n; j++) {
if (num != map[i][j]) {
return false;
}
}
}
return true;
}
}
'Baekjoon Online Judge > Java' 카테고리의 다른 글
[Baekjoon Online Judge] 1987 - 알파벳 / Java (0) | 2021.08.19 |
---|---|
[Baekjoon Online Judge] 3109 - 빵집 / Java (0) | 2021.08.19 |
[Baekjoon Online Judge] 1697 - 숨바꼭질 / Java (0) | 2021.08.17 |
[Baekjoon Online Judge] 1874 - 스택 수열 / Java (0) | 2021.08.16 |
[Baekjoon Online Judge] 2961 - 도영이가 만든 맛있는 음식 / Java (0) | 2021.08.12 |