def draw_stars(n):
if n==1:
return ['*']
stars=draw_stars(n//3)
l=[]
for star in stars:
l.append(star*3)
for star in stars:
l.append(star + ' '*(n//3)+star)
for star in stars:
l.append(star*3)
return l
n=int(input())
print('\n'.join(draw_stars(n)))
문제 해석도 안되고, 어떻게 풀어야 할지 감이 안와 참고하여 문제를 풀어보았다.
n==1일 때는 ['*']만 출력되고 우리는 이 '*'을 사용하여 모든 틀을 만든다.
n==3일 때는
['***',
'* *',
'***']
으로 만들어진다.
n==9이면 우리는 n==3일때 만들어진 저 틀을 사용하여 만든다.
마지막 코드에 .join()함수를 잘 몰라 학습해보았다.
join 함수
'구분자'.join(리스트)
리스트의 값과 값 사이에 '구분자'를 넣어서 하나의 문자열로 합쳐준다.
ex) '_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해준다.
그리하여 줄바꿈을 사이에 넣어주어 원하는 결과의 답으로 나오게 된다.
['***'\n
'* *'\n
'***']
코드만 보면 쉽다고 느껴지지만 코드를 짤 때는 전혀 쉽지 않은 문제였다.
다음에는 나 혼자 풀어볼 예정이다!