CodingTest/Java
BOJ_1992 : ์ฟผ๋ํธ๋ฆฌ
Soom_1n
2023. 2. 10. 08:56
1992๋ฒ: ์ฟผ๋ํธ๋ฆฌ
์ฒซ์งธ ์ค์๋ ์์์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ซ์ N ์ด ์ฃผ์ด์ง๋ค. N ์ ์ธ์ ๋ 2์ ์ ๊ณฑ์๋ก ์ฃผ์ด์ง๋ฉฐ, 1 ≤ N ≤ 64์ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ๋ ๊ธธ์ด N์ ๋ฌธ์์ด์ด N๊ฐ ๋ค์ด์จ๋ค. ๊ฐ ๋ฌธ์์ด์ 0 ๋
www.acmicpc.net
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n x n ํฌ๊ธฐ์ ์์ ์ ๋ณด์์ 0 ๋๋ 1๋ก ์์ถ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ ์ฌ๊ฐํ์ด ํ๋์ ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉด ๊ทธ ์๋ก ์์ถ๊ฐ๋ฅํ๋ค.
- ํด๋น ์๋ฅผ ์ถ๋ ฅํ๋ค.
- ๋ค๋ฅธ ์๊ฐ ์์ฌ์์ผ๋ฉด, ์ ์ฌ๊ฐํ์ 4๋ฑ๋ถํด์ ๋ค์ ์์ถํ๋ค.
- 4๋ฑ๋ถ ํ์๋ ๊ฒฐ๊ณผ๊ฐ์ () ๊ดํธ๋ก ๋ฌถ์ด ์ถ๋ ฅํ๋ค.
- ์ฌ๊ท๋ฅผ ์ด์ฉํด์ ์ ์ฌ๊ฐํ์ด ํ๋์ ์๋ก ์ด๋ฃจ์ด์ ธ์์ง ์์ผ๋ฉด 4๋ฑ๋ถ ๊ฐ์ ๋ค์ ๊ฒ์ฌํ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int[][] arr;
static StringBuilder sb;
private static void recursion(int n, int x, int y) {
if (check(n, x, y)) {
sb.append(arr[x][y]);
} else {
sb.append("(");
recursion(n / 2, x, y);
recursion(n / 2, x, y + n / 2);
recursion(n / 2, x + n / 2, y);
recursion(n / 2, x + n / 2, y + n / 2);
sb.append(")");
}
}
private static boolean check(int n, int x, int y) {
int num = arr[x][y];
for (int i = x; i < x + n; i++) {
for (int j = y; j < y + n; j++) {
if (arr[i][j] != num) return false;
}
}
return true;
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
arr = new int[n][n];
for (int i = 0; i < n; i++) {
String temp = br.readLine();
for (int j = 0; j < n; j++) {
arr[i][j] = temp.charAt(j) - '0';
}
}
sb = new StringBuilder();
recursion(n, 0, 0);
System.out.println(sb.toString());
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- main ๋ฉ์๋์์ ๊ฐ์ ์ ๋ ฅ๋ฐ๊ณ recursion ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- check ๋ฉ์๋๋ ์ ์ฌ๊ฐํ์ด ๊ฐ์ ์๋ก ์ด๋ฃจ์ด์ ธ์๋์ง ํ์ธํ๋ค.
- recursion ๋ฉ์๋๋ ์ ์ฌ๊ฐํ์ ํ ๋ณ์ ๊ธธ์ด n, ์ข์๋จ์ ์ขํ x,y ๋ฅผ ์
๋ ฅ๋ฐ๋๋ค.
- ํด๋น ๋ฒ์์ ์ ์ฌ๊ฐํ์ด ๊ฐ์ ์๋ก ์ด๋ฃจ์ด์ ธ์์ผ๋ฉด ๊ทธ ์๋ฅผ ์ถ๋ ฅํ๋ค.
- ๋ค๋ฅธ ์๊ฐ ์์ฌ์์ผ๋ฉด 4๋ฑ๋ถํด์ ๋ค์ recursion ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
๐ธ end ๐ธ
- ์ฌ๊ท๋ฅผ ์ด์ฉํ ๋ถํ ์ ๋ณต ๋ฌธ์ ๊ฐ ์ฌ๋ฆผํฝ ๊ฒ์ ํ๋ก ์ฐ์์ผ๋ก ํ์ด๋ดค๋๋ฐ, ์ฌ๊ท ์ฐ์ต์ ์ข์ ๊ฒ ๊ฐ๋ค.
- ๋ฌธ์ ๋ถ์๊ณผ ํ์ด ๊ณํ์ ์ ์ด๊ฐ๋ฉฐ ํ์ดํ๋ค.
728x90