๋ฌธ์
https://www.acmicpc.net/problem/1992
๋ด ๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static StringBuilder out = new StringBuilder();
static int n;
static String[][] map;
public static boolean check(int depth, int x, int y) {
String standard = map[x][y];
for(int i = x; i < x+depth; i++) {
for(int j = y; j < y+depth; j++) {
if(!standard.equals(map[i][j])) return false;
}
}
return true;
}
private static void QuadTree(int depth, int x, int y) {
if(check(depth, x, y)) out.append(map[x][y]);
else {
out.append("(");
depth /= 2;
int[] dx = {0, 0, depth, depth};
int[] dy = {0, depth, 0, depth};
for(int i = 0; i < 4; i++) {
QuadTree(depth, x+dx[i], y+dy[i]);
}
out.append(")");
}
}
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(in.readLine());
map = new String[n][n];
for(int i = 0; i < n; i++) {
map[i] = in.readLine().split("");
}
QuadTree(n, 0, 0);
System.out.println(out);
}
}
๐ ๋ถํ ์ ๋ณต, ์ฌ๊ท ๋ฌธ์
์ฃผ์ด์ง 2์ฐจ์ ๋ฐฐ์ด ํํ์ ์ ๋ ฅ์ 4๋ฑ๋ถํ๊ณ , (0, 0)์์๋ถํฐ ๋ธ๋ก์ ์ฎ๊ฒจ๊ฐ๋ฉฐ ์ฒดํฌํด์ฃผ์๋ค.
(๋ถํ ์ ๋ณต์ด ์ต์ํ์ง ์์ ๋ถ๋ค์ BOJ #1074 Z ๋ฌธ์ ๋ฅผ ์ดํดํ์๋ฉด ๋ ํธํ ๊ฑฐ์์ฉ)
๐ก ํผ๋๋ฐฑ
- ๋ถํ ์ ๋ณต ๊ณต๋ถ๋ฅผ ์ํด Z ๋ฌธ์ ์ ์ด ๋ฌธ์ ๋ฅผ ๋ ๋ฒ์ฉ ํ์๋๋ฐ,,
์์ง๋ ์๋ฒฝํ๊ฒ ์ ํธ๋ ๋๋์ ์๋ ๋ฏ ์ถ๋ค.! ๋ ๋ง๋ ํ์ด๋ด์ผ ํ ๋ฏ
'2๏ธโฃ Java > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java Algorithm] ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง? (0) | 2022.08.31 |
---|---|
[Java Algorithm] ๋ฏธ์ธ๋จผ์ง ์๋ ! BOJ #17144 (0) | 2022.08.31 |
[Java Algorithm] Z BOJ #1074 (0) | 2022.08.16 |
[Java Algorithm] ๋์ฅ๊ณ JUNGOL #1828 (0) | 2022.08.16 |
[Java Algorithm] ์ํ๋ฒณ BOJ #1987 (0) | 2022.08.16 |
๋๊ธ