백준 2447번 : 별 찍기 - 10
난이도 : 골드5

-문제 소개



-조건

  • N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3^k이며, 이때 1 ≤ k < 8이다.

-코드

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하여 저장해줍니다. 그리고 이 리스트 내부의 그림들을 줄바꿈하면서 더해줍니다.

0개의 댓글