원본 : www.acmicpc.net/problem/2447
2447번: 별 찍기 - 10
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이
www.acmicpc.net
풀이
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(reader.readLine());
int arr[][] = new int[n][n];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = 1;
}
}
star(arr, n, 0, 0);
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] == 1) {
writer.write("*");
} else {
writer.write(" ");
}
}
writer.newLine();
}
writer.flush();
}
public static void star(int[][] arr, int n, int indexBeginX, int indexBeginY) {
if (n != 1) {
for (int i = n / 3; i < 2 * n / 3; i++) {
for (int j = n / 3; j < 2 * n / 3; j++) {
arr[indexBeginX + i][indexBeginY + j] = 0;
}
}
for (int i = 0; i < n; i += n / 3) {
for (int j = 0; j < n; j += n / 3) {
star(arr, n / 3, indexBeginX + i, indexBeginY + j);
}
}
}
}
}
댓글 영역