def draw_stars(n):
if n == 1:
return ['*']
Stars = draw_stars(n//3)
pattern = []
for star in Stars:
pattern.append(star * 3)
for star in Stars:
pattern.append(star + ' ' * (n//3) + star)
for star in Stars:
pattern.append(star * 3)
return pattern
N = int(input())
stars = draw_stars(N)
for star in stars:
print(star)
별 찍기 문제는 주어진 N 크기에 따라 특정 패턴의 별을 출력하는 문제다. N은 3의 거듭제곱이며, 이 문제의 핵심은 크기가 N인 패턴을 재귀적으로 구성하는 것이다. 가장 작은 단위는 N=1일 때, 별 하나를 찍는 것이고, 이를 기반으로 N이 커질 때마다 패턴을 확장해 나간다.
이 문제를 해결하기 위해 재귀 함수를 사용한다. 재귀 함수는 자기 자신을 호출하여 같은 작업을 반복 수행하되, 매번 문제의 크기를 줄여나가는 방식으로 문제를 해결한다. 본 문제에서는 N을 3으로 나눈 크기의 패턴을 기반으로 전체 패턴을 구성한다. 이 과정에서 중앙에는 공백이 생기며, 이는 크기 N/3 패턴을 둘러싸는 형태로 나타난다.
재귀 함수 정의: draw_stars(n) 함수는 크기 n에 해당하는 별 패턴을 생성한다. n이 1일 때는 기본 단위인 별 하나를 반환한다.
재귀적 패턴 생성: n이 1보다 클 때, draw_stars(n//3)을 호출하여 n/3 크기의 패턴을 먼저 생성한다. 이 패턴을 이용해 전체 패턴을 구성한다.
패턴 구성: 생성된 n/3 크기의 패턴(Stars)을 이용해,