[알고리즘 스터디 - 1주차 6] 별 안에 별 안에 별 찍기
난이도
Gold 5
문제
규칙에 따라 별을 찍어보자.
먼저 $Star_0$ 는 별이 하나만 있는 패턴이다.
*
그리고 양의 정수 $i$ 에 대하여 $Star_i$ 의 패턴은 다음과 같다. 빈칸은 공백으로 채워져야 한다.
정수 $N$ 이 주어질 때 $Star_N$ 을 출력해 보도록 하자.
입력
정수 $N$ 이 주어진다. $(0 \leq N \leq 5)$
출력
$Star_N$ 을 출력한다. 모든 공백을 출력해야 함에 유의한다.
예제 입력
2
예제 출력
*
*
*****
***
* *
*
*
*****
***
* *
* * * * *
* * * * *
*************************
*** *** *** *** ***
* * * * * * * * * *
* * *
* * *
***************
*** *** ***
* * * * * *
* *
* *
***** *****
*** ***
* * * *
해설 및 후기
Gold4짜리 10993 별 찍기 - 18 문제로 재미를 본 후 비슷한 문제를 풀어보려고 골라본 문제이다. 마찬가지로 재귀를 이용해 풀 수 있었으며, hoshi(n-1)에서 리턴된 리스트의 크기만큼을 5번 순회하며 리턴할 리스트를 형성한다.
제출 코드
n = int(input())
def hoshi(num):
if(num==0):
return ['*']
toret = []
bef = hoshi(num-1)
bSize = len(bef)#1, 5 ...
for i in range(bSize):
tmp = ' '*bSize*2
tmp += bef[i]
tmp += ' '*bSize*2
toret.append(tmp)
for i in range(bSize):
tmp = ' '*bSize*2
tmp += bef[i]
tmp += ' '*bSize*2
toret.append(tmp)
for i in range(bSize):
tmp = ''
for j in range(5):
tmp += bef[i]
toret.append(tmp)
for i in range(bSize):
tmp = ''
tmp += ' '*bSize
for j in range(3):
tmp += bef[i]
tmp += ' '*bSize
toret.append(tmp)
for i in range(bSize):
tmp = ' '*bSize
tmp += bef[i]
tmp += ' '*bSize
tmp += bef[i]
tmp += ' '*bSize
toret.append(tmp)
return toret
a = hoshi(n)
for i in a:
print(i)