[재귀/ BaekJoon] # 2447 별 찍기 - 10

su_y2on·2022년 3월 7일
0

알고리즘

목록 보기
31/47
post-thumbnail

백준 2447번
재귀를 이용한 별찍기



풀이 1. 재귀

def dot(n):
    if n == 1:
        return ["*"]

    stars = dot(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(dot(n))
print('\n'.join(dot(n)))
  • 크게 첫줄, 둘째줄, 세번째로 3구역으로 나눠서 생각하기
  • 반복되는 규칙 : N/3의 패턴으로 둘러싸기 -> 첫줄은 3번반복, 두번째 줄은 중간만 비우기, 세번째 줄은 3번반복
  • 따라서 L에 매번 패턴을 한줄씩 넣어서 넘긴다.
  • ex) 9 : 3의 패턴패턴을 stars에 담기 -> 1의 패턴을 stars에 담기
    n = 1 : L = ["*"]
    n = 3 : L

    n = 9 : L
  • 출력은 최종 L값을 개행을 붙여서 한줄씩 출력

0개의 댓글