01-09 04:37
Recent Posts
Recent Comments
Tags
- DATABASE
- JOBํ๊ณ
- ICT
- DB
- ์๋ฐ
- Spring
- Java
- python
- TSQL
- ์จ์ผ๋ํ
- API๋ง์ผํ๋ ์ด์ค
- ์คํฝ์ค๋น
- ํ๋ก๋ณด๋ ธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์คํฝ๋ ํ
- linux
- mysql
- RaspberryPi
- ict๊ณต๋ชจ์
- ํ์ด์๊ณต๋ชจ์
- ํ์ด์ฌ
- ์กํ๊ณ
- ํ์ด์
- ์๋์ด๋ ธ
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- appetizer
- ICT๋ฉํ ๋ง
- Naver Cloud
- SQL
- ์ด๋ธ์
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค ๋ถํ ์ ๋ณต 1992 :: ์ฟผ๋ํธ๋ฆฌ ๋ณธ๋ฌธ
๐ฌ ๋ฌธ์ ์ค๋ช
ํ๋ฐฑ ์์์ ์์ถํ์ฌ ํํํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ฟผ๋ ํธ๋ฆฌ(Quad Tree)๋ผ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ํฐ ์ ์ ๋ํ๋ด๋ 0๊ณผ ๊ฒ์ ์ ์ ๋ํ๋ด๋ 1๋ก๋ง ์ด๋ฃจ์ด์ง ์์(2์ฐจ์ ๋ฐฐ์ด)์์ ๊ฐ์ ์ซ์์ ์ ๋ค์ด ํ ๊ณณ์ ๋ง์ด ๋ชฐ๋ ค์์ผ๋ฉด, ์ฟผ๋ ํธ๋ฆฌ์์๋ ์ด๋ฅผ ์์ถํ์ฌ ๊ฐ๋จํ ํํํ ์ ์๋ค.
์ฃผ์ด์ง ์์์ด ๋ชจ๋ 0์ผ๋ก๋ง ๋์ด ์์ผ๋ฉด ์์ถ ๊ฒฐ๊ณผ๋ "0"์ด ๋๊ณ , ๋ชจ๋ 1๋ก๋ง ๋์ด ์์ผ๋ฉด ์์ถ ๊ฒฐ๊ณผ๋ "1"์ด ๋๋ค. ๋ง์ฝ 0๊ณผ 1์ด ์์ฌ ์์ผ๋ฉด ์ ์ฒด๋ฅผ ํ ๋ฒ์ ๋ํ๋ด์ง๋ฅผ ๋ชปํ๊ณ , ์ผ์ชฝ ์, ์ค๋ฅธ์ชฝ ์, ์ผ์ชฝ ์๋, ์ค๋ฅธ์ชฝ ์๋, ์ด๋ ๊ฒ 4๊ฐ์ ์์์ผ๋ก ๋๋์ด ์์ถํ๊ฒ ๋๋ฉฐ, ์ด 4๊ฐ์ ์์ญ์ ์์ถํ ๊ฒฐ๊ณผ๋ฅผ ์ฐจ๋ก๋๋ก ๊ดํธ ์์ ๋ฌถ์ด์ ํํํ๋ค
์ ๊ทธ๋ฆผ์์ ์ผ์ชฝ์ ์์์ ์ค๋ฅธ์ชฝ์ ๋ฐฐ์ด๊ณผ ๊ฐ์ด ์ซ์๋ก ์ฃผ์ด์ง๋ฉฐ,
์ด ์์์ ์ฟผ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ์์ถํ๋ฉด "(0(0011)(0(0111)01)1)"๋ก ํํ๋๋ค.
N ×N ํฌ๊ธฐ์ ์์์ด ์ฃผ์ด์ง ๋, ์ด ์์์ ์์ถํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ์งธ ์ค์๋ ์์์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ซ์ N ์ด ์ฃผ์ด์ง๋ค.
- N ์ ์ธ์ ๋ 2์ ์ ๊ณฑ์๋ก ์ฃผ์ด์ง๋ฉฐ, 1 ≤ N ≤ 64์ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค.
- ๋ ๋ฒ์งธ ์ค๋ถํฐ๋ ๊ธธ์ด N์ ๋ฌธ์์ด์ด N๊ฐ ๋ค์ด์จ๋ค.
- ๊ฐ ๋ฌธ์์ด์ 0 ๋๋ 1์ ์ซ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์์์ ๊ฐ ์ ๋ค์ ๋ํ๋ธ๋ค.
์ถ๋ ฅ
- ์์์ ์์ถํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1)
8
11110000
11110000
00011100
00011100
11110000
11110000
11110011
11110011
์์ ์ถ๋ ฅ 1)
((110(0101))(0010)1(0001))
โ
๐ป Main.java
- (x, y), (x, y + n/2), (x + n/2, y), (x + n/2, y + n/2) 4๊ตฌ์ญ์ผ๋ก ๋๋ ์ ํํฐ์ ๊ฒ์ฌ๋ฅผ ์งํํ๋ค.
- ์์ถ์ด ๊ฐ๋ฅํ๋ฉด answer์ ์์ถ ๊ฒฐ๊ณผ๋ฅผ ํฉํ๋ค.
- ์์ถ์ด ๋ถ๊ฐ๋ฅํ๋ฉด ๊ดํธ๋ฅผ ์ด๊ณ ๋ฒ์ ๋ณ๋ก ํํฐ์ ๊ฒ์ฌ ์ฌ๊ท๋ฅผ ์์ํ๋ค.
- ๊ฐ ํํฐ์ ๋ณ๋ก ์ฌ๊ท๊ฐ ๋๋ ๋๋ง๋ค ๊ดํธ๋ฅผ ๋ซ์์ค๋ค.
/* ๋ฐฑ์ค ๋ถํ ์ ๋ณต - 1992 :: ์ฟผ๋ํธ๋ฆฌ */
import java.io.*;
public class Main {
static int[][] arr;
static String answer = "";
public static void partition(int x, int y, int size) {
if (check(x, y, size)) {
if(arr[x][y] == 1) {
answer += "1";
}
else if(arr[x][y] == 0) {
answer += "0";
}
return;
}
int newSize = size / 2;
answer += "(";
partition(x, y, newSize); // ์ผ์ชฝ ์
partition(x, y + newSize, newSize); // ์ค๋ฅธ์ชฝ ์
partition(x + newSize, y, newSize); // ์ผ์ชฝ ์๋
partition(x + newSize, y + newSize, newSize); // ์ค๋ฅธ์ชฝ ์๋
answer += ")";
}
static boolean check(int x, int y, int size) {
int base = arr[x][y];
for(int i = x; i < x + size; i++) {
for(int j = y; j < y + size; j++) {
if(base != arr[i][j]) {
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++) {
char[] tmp = br.readLine().toCharArray();
for(int j = 0; j < n; j++)
arr[i][j] = tmp[j] - '0';
}
partition(0, 0, n);
System.out.println(answer);
br.close();
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๋ถํ ์ ๋ณต 2448 :: ๋ณ ์ฐ๊ธฐ - 11 (0) | 2022.04.10 |
---|---|
[BAEKJOON] ๋ฐฑ์ค ๋ถํ ์ ๋ณต 2447 :: ๋ณ ์ฐ๊ธฐ - 10 (0) | 2022.04.10 |
[BAEKJOON] ๋ฐฑ์ค ๋ถํ ์ ๋ณต 2630 :: ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2022.04.10 |
[BAEKJOON] ๋ฐฑ์ค ๋ถํ ์ ๋ณต 11728 :: ๋ฐฐ์ด ํฉ์น๊ธฐ (0) | 2022.04.10 |
[BAEKJOON] ๋ฐฑ์ค ์ด๋ถ๊ฒ์ 10815 :: ์ซ์ ์นด๋ (0) | 2022.04.07 |
Comments