๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/2447
2447๋ฒ: ๋ณ ์ฐ๊ธฐ - 10
์ฌ๊ท์ ์ธ ํจํด์ผ๋ก ๋ณ์ ์ฐ์ด ๋ณด์. N์ด 3์ ๊ฑฐ๋ญ์ ๊ณฑ(3, 9, 27, ...)์ด๋ผ๊ณ ํ ๋, ํฌ๊ธฐ N์ ํจํด์ N×N ์ ์ฌ๊ฐํ ๋ชจ์์ด๋ค. ํฌ๊ธฐ 3์ ํจํด์ ๊ฐ์ด๋ฐ์ ๊ณต๋ฐฑ์ด ์๊ณ , ๊ฐ์ด๋ฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ์นธ์ ๋ณ์ด
www.acmicpc.net
โธ ๋ฌธ์
์ฌ๊ท์ ์ธ ํจํด์ผ๋ก ๋ณ์ ์ฐ์ด ๋ณด์. N์ด 3์ ๊ฑฐ๋ญ์ ๊ณฑ(3, 9, 27, ...)์ด๋ผ๊ณ ํ ๋, ํฌ๊ธฐ N์ ํจํด์ N×N ์ ์ฌ๊ฐํ ๋ชจ์์ด๋ค.
ํฌ๊ธฐ 3์ ํจํด์ ๊ฐ์ด๋ฐ์ ๊ณต๋ฐฑ์ด ์๊ณ , ๊ฐ์ด๋ฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ์นธ์ ๋ณ์ด ํ๋์ฉ ์๋ ํจํด์ด๋ค.
***
* *
***
N์ด 3๋ณด๋ค ํด ๊ฒฝ์ฐ, ํฌ๊ธฐ N์ ํจํด์ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์์ง ๊ฐ์ด๋ฐ์ (N/3)×(N/3) ์ ์ฌ๊ฐํ์ ํฌ๊ธฐ N/3์ ํจํด์ผ๋ก ๋๋ฌ์ผ ํํ์ด๋ค. ์๋ฅผ ๋ค์ด ํฌ๊ธฐ 27์ ํจํด์ ์์ ์ถ๋ ฅ 1๊ณผ ๊ฐ๋ค.
โธ ์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 3์ ๊ฑฐ๋ญ์ ๊ณฑ์ด๋ค. ์ฆ ์ด๋ค ์ ์ k์ ๋ํด N=3k์ด๋ฉฐ, ์ด๋ 1 ≤ k < 8์ด๋ค.
โธ ์ถ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ N๋ฒ์งธ ์ค๊น์ง ๋ณ์ ์ถ๋ ฅํ๋ค.
๐ ๋ฌธ์ ์ ๋ณด
- ๐ฅ ๋ฌธ์ ๋ ๋ฒจ : ๊ณจ๋ 5
- ๐ ๋ฌธ์ ์ ํ : ๋ถํ ์ ๋ณต, ์ฌ๊ท
- ๐ฌ ํ์ด ์ธ์ด : JAVA
๐ค ๋ฌธ์ ํ์ด
๋จผ์ ์ฃผ์ด์ง๋ ์๋ 3์ ๊ฑฐ๋ญ์ ๊ณฑ์ ์์ด๊ณ ,
n = 3์ผ ๋์ ๋ชจ์์ ๋ค์๊ณผ ๊ฐ๋ค.
* | * | * |
* | * | |
* | * | * |
์ด ๋ชจ์์ *์ ์ฐ์์ ์ผ๋ก ์ฑ์ฐ๋ฉด์ ์งํ๋๋๋ฐ
์ด๋, ํ ๋ธ๋ก์ ๊ฐ์ด๋ฐ๋ ์ฑ์์ง์ง ์๋๋ค.
์์๋ฅผ ๋ณด์๋ฉด
n = 3์ผ ๋,
* | * | * |
* | * | |
* | * | * |
n = 9 ์ผ ๋,
* | * | * | * | * | * | * | * | * |
* | * | * | * | * | * | |||
* | * | * | * | * | * | * | * | * |
* | * | * | * | * | * | |||
* | * | * | * | |||||
* | * | * | * | * | * | |||
* | * | * | * | * | * | * | * | * |
* | * | * | * | * | * | |||
* | * | * | * | * | * | * | * | * |
n = 27 ์ผ ๋๋ ์๋์ ๊ฐ๋ค.
์ฆ, n์ด 3์ ์ ๊ณฑ์์ผ ๋, ์๋์ ๊ฐ์ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ผ ์ ์๋ค.
์ด๋ ์ฐพ์ ์ ์๋ ๊ท์น์ ํ ๋ธ๋ก์์ ๊ฐ์ด๋ฐ ๋ถ๋ถ์ ๊ณต๋ฐฑ์ด๋ผ๋ ๊ฒ์ด๋ค.
n = 3์ผ ๋ 2์ฐจ์ ๋ฐฐ์ด์ ์๊ฐํด ๋ณด๋ฉด, ๊ณต๋ฐฑ์ (1, 1)์ด๋ค.
์ฆ, ํ์ ์ฑ์ธ ๋, (0, 0), (0, 1), (0, 2), (1, 0)๊น์ง๋ ๋ณ์ ์ถ๋ ฅํ๊ณ
๋ณ ์ถ๋ ฅ์ด 4๋ฒ ์ด๋ฃจ์ด์ง๋ฉด ๊ทธ๋ค์ ๋ธ๋ก์ ๋ฐ๋์ ๊ณต๋ฐฑ์ด๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก, n = 9๋ผ๋ฉด n = 3์ผ ๋์ ๋ชจ์์ด ํ ๋ธ๋ก์ด ๋์ด ๋ฐ๋ณต๋๋ค.
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ฉด
๋จผ์ , n = 27์ผ ๋, 9๊ฐ์ ๋ธ๋ก์ ๊ตฌ๋ถํ ์ ์๋ค.
์ด๋ ๊ณต๋ฐฑ์ธ ๊ตฌ๊ฐ์ ๋ง์กฑํ๋ค๋ฉด ๊ทธ ๊ตฌ๊ฐ์ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์ฐ๊ณ , ๊ณต๋ฐฑ์ด ์๋ ๊ตฌ๊ฐ์ ์ฌ๊ทํธ์ถ์ ํ๋ค.
n = 9๋ก ๋์ด๊ฐ๋ค๋ฉด ์ด ์ ๊ณผ ๊ฐ์ด ๋ค์ 9๊ฐ์ ๋ธ๋ก์ผ๋ก ๋๋ ๋ค,
๊ณต๋ฐฑ ๊ตฌ๊ฐ์ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์ฐ๊ณ , ์๋ ๊ตฌ๊ฐ์ ๋ค์ ์ฌ๊ท ํธ์ถ์ ํ๋ค.
๊ทธ๋ ๊ฒ ๋๋ค๋ฉด n = 3์ผ ๋๋ก ๊ฐ ๊ฒ์ด๊ณ ,
์์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค ๋ณด๋ฉด n = 1์ผ ๋๊ฐ ์จ๋ค.
์ฌ๊ธฐ์ ๋ ์ชผ๊ฐ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํด๋น ๊ตฌ์ญ์ ๋ฐฐ์ด์ ๊ณต๋ฐฑ ๋๋ ๋ณ๋ก ์ฑ์ฐ๋ฉด ๋๋ค.
์ฆ, ๊ฐ ๋จ๊ณ์์ 9๊ฐ์ ๋ธ๋ก์ผ๋ก ๊ตฌ๋ถํ ๋ค, ์ขํ์ ๋ฐ๋ผ ๊ณต๋ฐฑ ๋๋ ์ฌ๊ท ํธ์ถ์ ๋ฐ๋ณตํด ์ฃผ๋ฉฐ ๋ ์ด์ ๋๋ ์นธ์ด ์์ ๋๊น์ง ๋ฐ๋ณตํ๋ ๊ฒ์ด๋ค.
๊ท์น ์ฐพ๊ธฐ๋ถํฐ ๊ตฌํ๊น์ง ๊ต์ฅํ ์ด๋ ค์ ๋ ๋ฌธ์ ์๋ค ๐ญ๐
โ ์ต์ข ์ฝ๋
๋ฉ๋ชจ๋ฆฌ : 22428KB
์๊ฐ : 216ms
import java.io.*;
public class Main {
static int n;
static char[][] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
n = Integer.parseInt(br.readLine()); // 3์ ๊ฑฐ๋ญ์ ๊ณฑ, nxn
arr = new char[n][n]; // ๋ณ์ ๊ทธ๋ฆด ์ด์ฐจ์ ๋ฐฐ์ด
partition(0, 0, n, false); // ์์์ , ๊ณต๋ฐฑ์นธ ์ฌ๋ถ
// ์ถ๋ ฅ
for (char[] line : arr) {
bw.write(line);
bw.write("\n");
}
bw.flush();
bw.close();
br.close();
}
private static void partition(int x, int y, int size, boolean blank) {
if (blank) { // ๊ณต๋ฐฑ ์นธ์ด๋ผ๋ฉด
for (int i = x; i < x+size; i++) {
for (int j = y; j < y+size; j++) {
arr[i][j] = ' ';
}
}
return;
}
// ๋ ์ด์ ์ชผ๊ฐค ์ ์์๋
if (size == 1) {
arr[x][y] = '*';
return;
}
int newSize = size/3; // ํ ๋ธ๋ก์ ์ฌ์ด์ฆ
int cnt = 0;
for (int i = x; i < x+size; i+=newSize) {
for (int j = y; j < y+size; j+=newSize) {
cnt++;
// ๊ณต๋ฐฑ ์นธ์ผ ๊ฒฝ์ฐ
if (cnt == 5) partition(i, j, newSize, true);
else partition(i, j, newSize, false);
}
}
}
}
๐ ํจ๊ป ํ์ด๋ณด๋ฉด ์ข์ ๋ฐฑ์ค ๋ฌธ์
๐ reference
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Boj_2252] ์ค ์ธ์ฐ๊ธฐ (1) | 2024.01.11 |
---|---|
[Boj_21921] ๋ธ๋ก๊ทธ (1) | 2023.12.04 |
[Boj_1074] Z (1) | 2023.11.28 |
[Boj_1992] ์ฟผ๋ํธ๋ฆฌ (1) | 2023.11.28 |
[Boj_2630] ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2023.11.24 |