

N 을 받는다. 이 때 N은 3의 거듭제곱 꼴이다. 즉 3,9,27,81... 3^8 까지.
별을 찍을건데
***
* *
***
3x3의 꼴로 찍을건데 가운데를 비울것이다.
*********
* ** ** *
*********
*** ***
* * * *
*** ***
*********
* ** ** *
*********
꼴로 가운데를 비우고, N이 3일때의 꼴로 그 가운데를 둘러싼다.
재귀적으로 이 꼴을 만들어보자.
재귀적으로 반복하자.
어떻게? 뭘?
정사각형 가운데를 파내고
파낸 정사각형의 한변의 별의 개수가 1이 아니라면 3등분해서 가로 세로 3등분해서,3등분된 영역의 가운데를 또 파기.
파낸 정사각형의 한 변의 개수가 1이 아니라면 또 3등분해서
3등분의 영역의 가운데를 파기.
한변의 개수가 1이 될때까지 반복
즉
ㅁㅁㅁ
ㅁㅁㅁ
ㅁㅁㅁ
에서 가운데 ㅁ만 파는 알고리즘을
나머지 ㅁ 8개에서 재귀적으로 호출하기.
import sys
N = int(sys.stdin.readline())
# 별판을 2차원 리스트로 만든다
stars = [['*' for _ in range(N)] for _ in range(N)]
def pop_out(x, y, size):
if size == 1:
return
new_size = size // 3
# 영역을 3*3 으로 9등분 한다.
for i in range(3):
for j in range(3):
nx = x + i * new_size
ny = y + j * new_size
if i == 1 and j == 1:
# 정사각형의 가운데 영역을 공백으로 채우기.
for a in range(nx, nx + new_size):
for b in range(ny, ny + new_size):
stars[a][b] = ' '
else:
# 나머지 8개는 재귀 호출
pop_out(nx, ny, new_size)
# 실행
pop_out(0, 0, N)
# 출력
for line in stars:
print(''.join(line))