#include<bits/stdc++.h>
using namespace std;
char sqare[2188][2188];
void make(int n,int x,int y){
if(n==1){
sqare[x][y]='*';
return;
}
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(i==1&&j==1)
continue;
make(n/3,n/3*i+x,n/3*j+y);
}
}
}
int main(void){
ios::sync_with_stdio(0);cin.tie(0);
int N;
cin >> N;
for(int i=0;i<N;i++){
fill(&sqare[i][0],&sqare[i][N],' ');
}
make(N,0,0);
for(int i=0;i<N;i++){
cout << sqare[i] << '\n';
}
}
// 3
// ***
// * *
// ***
// 9
// *********
// * ** ** *
// *********
// *** ***
// * * * *
// *** ***
// *********
// * ** ** *
// *********
함수원형
void func(int n,int x,in y)
n : 현재 구역 크기
x : 행
y : 열
base condition
n==1 일 때, ar[x][y]=’*’
재귀식
반복문을 3x3 형태로 돌면서 가운데를 제외하고 좌표를 구해 재귀함수를 호출한다.
좌표는 n/3*(i or j) + (x or y)
으로 구할 수 있다.