๋ฐฑ์ค 2447๋ฒ, ๋ณ ์ฐ๊ธฐ - 10 : Java
๐ ๋ฌธ์ ๋งํฌ
๐ ๋ฌธ์ ํ์ด
์ฌ๊ท ๋ฌธ์ ์ด๋ค. ์ฒ์์ ์์ ๊ฐ ํ ๋์ ์ ๋ค์ด์ค์ง ์์์ ์บก์ฒํด์ ๊ทธ๋ฆผํ์ผ๋ก ๊ทธ๋ ค๋ณด๋ ๋ณ์ ์ฐ๋ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ์ดํด๊ฐ ๊ฐ๋ค. ๋ค์์ ํฌ๊ธฐ 27์ ํจํด์ด๋ค.
ํฌ๊ธฐ 3์ ํจํด(= ๋ถํ์ ์ ์ฌ๊ฐํ)์ ๊ฐ์ด๋ฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ์นธ์ ๋ณ์ด ํ๋์ฉ ์๋ค.
ํฌ๊ธฐ 9์ ํจํด(= ๋ณด๋ผ์ ์ ์ฌ๊ฐํ)์ ํฌ๊ธฐ 3์ ํจํด์ด ๊ฐ์ด๋ฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ์นธ์ ์๋ค.
ํฌ๊ธฐ 27์ ํจํด(= ๋ ธ๋์ ์ ์ฌ๊ฐํ)์ ํฌ๊ธฐ 9์ ํจํด์ด ๊ฐ์ด๋ฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ์นธ์ ์๋ค.
2์ฐจ์ ๋ฐฐ์ด์ ํ์ฉํ๊ณ , boolean ๋ณ์๋ฅผ ์ด์ฉํด ๊ณต๋ฐฑ์ธ์ง ์๋์ง ๊ตฌ๋ถํ์ฌ ๋ณ ๋๋ ๊ณต๋ฐฑ์ ์๊ธฐ ์๋ฆฌ์ ๋ฃ์ด์ฃผ๋ฉด ๋๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค. ๋ญ๊ฐ N์ N/3์ผ๋ก ๋ ์ด์ ์ชผ๊ฐค ์ ์์ ๋๊น์ง ์ฌ๊ท ํจ์๋ฅผ ๊ณ์ ํธ์ถํด์ ๋ณ์ ์ฐ๋ ๋๋์ ์๊ฒ ๋๋ฐ ๋ง์ ์ฝ๋๋ฅผ ์ง๋ ค๋ ๋ง๋งํ๋ค ,, ๋ณ์ ์ฐ๋ ์ฌ๊ท ํจ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ ฅ๊ฐ N๋ง ๋๊ณ ์๊ฐํ๋๋ฐ, ํ์ด๋ฅผ ์ฐพ์๋ณด๋ 2์ฐจ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ด์ ๋ณ์ ์์น์ธ x, y์ ๊ณต๋ฐฑ์ธ์ง ๊ตฌ๋ถํ๋ boolean ๋ณ์๋ ํ๋ผ๋ฏธํฐ๋ก ๋ ๊ฒ์ ๋ณด๊ณ ํํธ๋ฅผ ์ป์๋ค.
๋ฉ์ธ ํจ์์์ ๋ณ์ ์ฐ์ ๋์๋ StringBuilder๋ฅผ ํ์ฉํด ํ ๋ฒ์ ์ถ๋ ฅํ๋ค.
์ฐพ์๋ณด๋ StringBuilder ๋ณด๋ค๋ BufferedWriter๊ฐ ์ถ๋ ฅ์ด ๋ง์ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ๋ ์ข์ ํธ์ด๋ผ๊ณ ํ๋ค.
Key Point
๐ ์ฌ๊ท ํจ์๋ฅผ ํ์ฉํ๋ค.
Java ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static char[][] stars;
static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
stars = new char[N][N];
drawStar(0, 0, N, false);
StringBuilder result = new StringBuilder();
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
result.append(stars[i][j]);
}
result.append('\n');
}
System.out.println(result);
}
public static void drawStar(int x, int y, int N, boolean blank) {
if (blank) { // ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐ
for (int i = x; i < x+N; i++) {
for (int j = y; j < y+N; j++) {
stars[i][j] = ' ';
}
}
return;
}
if (N == 1) { // ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ
stars[x][y] = '*';
return;
}
int size = N / 3;
int count = 0;
for (int i = x; i < x+N; i += size) {
for (int j = y; j < y+N; j += size) {
count++;
if (count == 5) drawStar(i, j, size, true);
else drawStar(i, j, size, false);
}
}
}
}