주어진 크기만큼 True
로 구성된 리스트를 먼저 만든다.
그리고, 규칙에 따라서 비어있게 될 부분을 False
로 바꿔주면 된다.
9등분으로 쪼개고 가운데 부분은 비우는 규칙을 다시 한번 각 9등분에 적용하는데, 이를 가장 작은 크기가 될 때까지 반복한다. (크기가 1일 될 때까지 재귀적으로 적용한다.)
num = int(input())
stars=[[True]*num for _ in range(num)]
def star_del(x,y,n):
if n==1:
return stars
else:
for i in range(n//3):
for j in range(n//3):
stars[x+n//3+i][y+n//3+j]=False
for i in range(3):
for j in range(3):
star_del(x+i*n//3,y+j*n//3,n//3)
return stars
star_del(0,0,num)
for i in range(num):
for j in range(num):
if stars[i][j] == True:
print("*",end='')
else:
print(" ",end='')
print()
처음에 해당 코드를 작성할 때에는, 일부분이 원하는 데로 그려지지 않아서 애를 먹었던 기억이 있다.