[Python] 별 찍기-10 - 재귀

Saemi Min·2023년 2월 7일
0

BaekJoon

목록 보기
7/30
post-thumbnail

해당 문제 링크

풀이

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)))

Git - 코드

해석 및 기억할 점

문제 해석도 안되고, 어떻게 풀어야 할지 감이 안와 참고하여 문제를 풀어보았다.
n==1일 때는 ['*']만 출력되고 우리는 이 '*'을 사용하여 모든 틀을 만든다.
n==3일 때는
['***',
'* *',
'***']
으로 만들어진다.
n==9이면 우리는 n==3일때 만들어진 저 틀을 사용하여 만든다.

마지막 코드에 .join()함수를 잘 몰라 학습해보았다.

join 함수
'구분자'.join(리스트)
리스트의 값과 값 사이에 '구분자'를 넣어서 하나의 문자열로 합쳐준다.
ex) '_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해준다.

그리하여 줄바꿈을 사이에 넣어주어 원하는 결과의 답으로 나오게 된다.
['***'\n
'* *'\n
'***']

코드만 보면 쉽다고 느껴지지만 코드를 짤 때는 전혀 쉽지 않은 문제였다.
다음에는 나 혼자 풀어볼 예정이다!

profile
I believe in myself.

0개의 댓글