백준 2447번 : 별 찍기 - 10
난이도 : 골드5
def renderStars(n):
if n == 1:
return ['*']
Stars = renderStars(n//3)
list = []
for star in Stars:
list.append(star*3)
for star in Stars:
list.append(star+' '*(n//3)+star)
for star in Stars:
list.append(star*3)
return list
N=int(input())
print('\n'.join(renderStars(N)))
재귀를 사용하여 푸는 문제입니다. 먼저 함수 내에 n = 1일 때 ""을 리턴하게 별을 그리게 만들어줍니다. 그리고 재귀를 시작하는데요, 첫 줄엔 Stars 내의 star 3만큼, 두 번째 줄은 "" + 공백 재귀 // 3 + "*", 세 번째 줄은 첫 줄과 동일하게 출력됩니다. 그리고 이것들을 list에다 append하여 저장해줍니다. 그리고 이 리스트 내부의 그림들을 줄바꿈하면서 더해줍니다.