๋ฌธ์
์ฌ๊ท์ ์ธ ํจํด์ผ๋ก ๋ณ์ ์ฐ์ด ๋ณด์. 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๋ฒ์งธ ์ค๊น์ง ๋ณ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
27
์์ ์ถ๋ ฅ 1
ํ์ด
( ์๋ ๋ฌธ์ ์๋ N=3k์ด๋ฉฐ, ์ด๋ 1 ≤ k < 8 ์ด๋ผ๊ณ ๋์์ 1์ด ์
๋ ฅ๋๋ ๊ฑฐ๋ ์ ํ ์๊ฐ๋ ์ํ๊ณ ๊ณ ๋ ค๋ ์ํ๋๋ฐ ๋ญ ์ด๋ค ๋ฐฉ๋ฒ์ ์จ๋ ๊ณ์ ์๊ฐ์ด๊ณผ๊ฐ ๋์ ๋ญ์ง ํ๊ณ ์ฐพ์๋ดค๋๋ 1์ด ์
๋ ฅ๋๋ฉด ๋ณ ํ๋๊ฐ ์ถ๋ ฅ๋์ผ ํ๋ค๊ณ ํ๋ค.... ๊ทธ๋์ ๊ทธ๊ฒ๋ง ์ถ๊ฐํด์ฃผ์๋๋ ์๊ฐ์ด๊ณผ ์์ด ์ ๋ต... ๋๋ฌด ํ๋๋ค... )
n์ 3์ ๋ฐฐ์๋ก ์ ๋ ฅ๋๊ณ , n*n ํฌ๊ธฐ์ ์ฌ๊ฐํ์ผ๋ก *์ด ์ถ๋ ฅ๋๋ค.
์ ์ฒด ์ฌ๊ฐํ์ 9๊ฐ๋ก ๋๋ด์ ๋, ์ ๊ฐ์ด๋ฐ๋ ํญ์ ๋น์นธ, ๋๋จธ์ง 8๊ฐ ๋ถ๋ถ์ ๋ 9๊ฐ๋ก ๋๋ ์ ธ ๊ฐ์ ๊ท์น์ ๋ฐ๋ณตํ๋ค => ์ฌ๊ทํจ์
์ฒ์์๋ ํ์คํ์ค ์์๋๋ก ์ถ๋ ฅํ๋ ๊ฑธ ์๊ฐํ๋๋ฐ ๊ทธ๋ฐ ๋ฐฉ๋ฒ์ ๋์ ํ ๋ ์ค๋ฅด์ง ์์๋ค. n*nํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด *๊ณผ ๊ณต๋ฐฑ์ ์ ๋ ฅํ๋๊ฒ ๋ซ๊ฒ ๋ค ์ถ์๋ค
๊ฐ์ฅ ์์ ๋ฒ์๋ n์ด 3์ผ ๋ ๋ ธ๋์ ๋ค๋ชจ ๋ถ๋ถ์ฒ๋ผ ์ถ๋ ฅ๋ ๋์ด๋ค : ์ต์ ์ฌ๊ฐํ
void Star(String[][] star, int n, int x, int y)
๋ฐฐ์ด star์ n, ์ผ์ชฝ ๊ผญ๋๊ธฐ์ ์ขํ๊ฐ ์ ๋ ฅ๋๋ฉด ํด๋น ์์น์ ์ต์ ์ฌ๊ฐํ์ ์ ์ฅ
1. n == 3 ์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ํด๋น ์์น์ ์ต์ ์ฌ๊ฐํ์ ์ ์ฅ,
2. n != 3 ์ด๋ฉด n/3์ ๋ณ๊ฒฝ๋ x, y๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ฌํธ์ถํ๋ค.
void Blank(String[][] star, int n, int x, int y)
๋ฐฐ์ด๊ณผ n, ์ผ์ชฝ ๊ผญ๋๊ธฐ์ ์ขํ๊ฐ ์ ๋ ฅ๋๋ฉด ํด๋น ์์น์ n*n ํฌ๊ธฐ์ ๊ณต๋ฐฑ์ ์ ์ฅ
1. n์ด ์ ๋ ฅ๋๋ฉด Star(star, n, 0, 0)์ ํธ์ถ
2. Star ๋ด๋ถ์์ n == 3 ์ธ์ง ๊ฒ์ฌ, 3์ด ์๋๋ผ๋ฉด n/3 ํฌ๊ธฐ์ Star์ ์ฌํธ์ถํด์ผ ํ๋๋ฐ ์ด 9๋ถ๋ถ์ผ๋ก ์ชผ๊ฐ์ง๊ธฐ ๋๋ฌธ์ n/3 ํฌ๊ธฐ์ ์ฌ๊ฐํ์ 9๋ฒ ํธ์ถํด์ผ ํ๋ค.
๋, 5๋ฒ์งธ ์ฌ๊ฐํ์ ๋ชจ๋ ๊ณต๋ฐฑ์ด์ด์ผ ํ๊ธฐ ๋๋ฌธ์ conut๋ณ์๋ฅผ ๋ฐ๋ก ์ ์ธํด์ count๊ฐ 5์ผ๋๋ Blank ํจ์๋ฅผ, ๊ทธ ์ธ์๋ Star ํจ์๋ฅผ ํธ์ถํด์ค๋ค.
9๋ฒ ํธ์ถ์ x,y๋ฅผ (0, 0) , (0, n/3) , (0, 2n/3) , (n/3, 0) , (n/3, n/3) , (n/3, 2n/3) , (2n/3, 0) , (2n/3, n/3) , (2n/3, 2n/3)์ผ๋ก ํธ์ถํด์ผ ํ๊ธฐ ๋๋ฌธ์ for๋ฌธ์ ์กฐ๊ฑด์ for(int i = x; i < x + n; i += n/3) / for(int j = y; j < y + n; j += n/3) ๋ก ์์ฑํ๋ค.
import java.io.*;
import java.util.Scanner;
public class B2447 {
static void Star(String[][] star, int n, int x, int y) {
if(n == 3) {
for(int i = x; i < x+3; i ++) {
for(int j = y; j < y+3; j ++) {
star[i][j] = "*";
}
}
star[x+1][y+1] = " ";
} else {
int count = 1;
for(int i = x; i < x + n; i += n/3) {
for(int j = y; j < y + n; j += n/3) {
if(count == 5) {
Blank(star, n/3, i, j);
} else {
Star(star, n/3, i, j);
}
count++;
}
}
}
}
static void Blank(String[][] star, int n, int x, int y) {
for(int i = x; i < x + n; i ++) {
for(int j = y; j < y + n; j ++) {
star[i][j] = " ";
}
}
}
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = sc.nextInt();
if(n == 1) {
System.out.println("*");
return;
}
String[][] star = new String[n][n];
Star(star, n, 0, 0);
for(int i = 0; i < n; i ++) {
for(int j = 0; j < n; j ++) {
bw.write(star[i][j]);
}
bw.newLine();
}
bw.flush();
}
}