def draw_star(n) :
global Map
if n == 3 :
Map[0][:3] = Map[2][:3] = [1]*3
Map[1][:3] = [1, 0, 1]
return
a = n//3
draw_star(n//3)
for i in range(3) :
for j in range(3) :
if i == 1 and j == 1 :
continue
for k in range(a) :
Map[a*i+k][a*j:a*(j+1)] = Map[k][:a]
N = int(input())
Map = [[0 for i in range(N)] for i in range(N)]
draw_star(N)
for i in Map :
for j in i :
if j :
print('*', end = '')
else :
print(' ', end = '')
print()
재귀로 구현한 코드 중 가장 깔끔해보였다!
2차원 배열에 담는다는 아이디어를 생각하지 못했었는데 나중에 다시 보려고 일단 기록해둔다.
문제 출처
https://www.acmicpc.net/problem/2447
참고
https://study-all-night.tistory.com/5