[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;
}
}
'๐ป Coding Problems Solving > Brute Force' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ 16637] ๊ดํธ์ถ๊ฐํ๊ธฐ (0) | 2023.06.22 |
---|---|
[BOJ 12919] A์ B2 (0) | 2023.06.18 |
[BOJ 3085] ์ฌํ๊ฒ์ (0) | 2022.06.26 |
[BOJ 2309] ์ผ๊ณฑ ๋์์ด (0) | 2022.06.21 |
[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ์นดํซ (0) | 2022.04.16 |
์ต๊ทผ๋๊ธ