입력이 3의 배수로 주어지고, 문제에서 나온 것 처럼 크기의 공백을 N/3 크기의 패턴이 둘러 싼 모양을 출력해야 한다. 가장 작은 N=3의 패턴부터 채워 재귀적으로 패턴을 채워나가는 것이 중요 포인트이다. 별 맵을 만드는 재귀 함수에서 좌상단 부터 (N/3) 크기의 패턴을 N 크기의 부분에 채우면 해결할 수 있다. 출력시에는 만들어진 맵을 모두 돌며 별 혹은 공백을 출력하면 된다.
def makestarmap(starmap,n):
if n == 3:
starmap[0] = starmap[2] = [True,True,True]
starmap[1] = [True,False,True]
return
a = n //3
makestarmap(starmap,a)
for i in range(3):
for j in range(3):
if i == 1 and j == 1:
continue
for k in range(a):
starmap[a*i+k][a*j:a*(j+1)] = starmap[k][:a]
n = int(input())
starmap=[]
for _ in range(n):
starmap.append([False]*n)
makestarmap(starmap,n)
for row in starmap:
for element in row:
if element:
print('*',end='')
else:
print(' ',end='')
print()