문제 출처 : https://www.acmicpc.net/problem/2447

N은 3의 거듭제곱꼴이다.
N = 3
***
* *
***
N = 9
*********
* * * * *
*********
*********
* * * * *
*********
*********
* * * * *
*********
N = 3일때의 모양이 3x3 에 가운데만 없는 꼴이다.
별을 다 채우고 가운데를 파내는 방식으로 풀 수 있다.
저번에는 그렇게 풀었는데 사실 이 문제의 취지는 재귀를 활용해야 한다.
출처: https://cotak.tistory.com/38 [TaxFree:티스토리]
를 참고하여 공부했다.
import sys
sys.setrecursionlimit(10**6)
def append_star(LEN):
if LEN == 1:
return ['*']
Stars = append_star(LEN//3)
L = []
for S in Stars:
L.append(S*3)
for S in Stars:
L.append(S+' '*(LEN//3)+S)
for S in Stars:
L.append(S*3)
return L
n = int(sys.stdin.readline().strip())
print('\n'.join(append_star(n)))