규칙자체는 쉽게 찾아낼 수 있는데 이걸 코드로 어떻게 구현할지 도무지 생각이 안떠올랐다. 재귀를 잘 못써서 더 힘들었다. 그래서 결국 구글링을 해서 답을 찾았다.. (https://st-lab.tistory.com/95)
import java.util.Scanner;
import java.io.*;
public class No2447_별찍기10 {
static char [][] arr;
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
arr= new char[n][n];
star(0,0,n,false);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for (int i = 0; i < n; i++) {
bw.write(arr[i]); //한줄씩
bw.write("\n");
}
bw.flush();
bw.close();
}
public static void star(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++) {
arr[i][j]=' ';
}
}
return ;
}
if (n==1) { //더이상 쪼갤 수 없는 블록일때
arr[x][y]='*';
return ;
}
int size = n/3; //9개짜리 블럭의 크기
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) {
star(i,j,size,true);
}
else {
star(i,j,size,false);
}
}
}
}
}