📌 문제

💯 정답
def draw(n):
tmp =[]
for i in range(3 * len(n)):
if i // len(n) == 1:
tmp.append(n[i%len(n)] + " " * len(n) + n[i%len(n)])
else:
tmp.append(n[i%len(n)] * 3)
return tmp
star = ["***", "* *", "***"]
N = int(input())
cnt = 0
while N != 3:
N = N // 3
cnt += 1
for _ in range(cnt):
star = draw(star)
for i in star:
print(i)
📝 설명
• N이 3일때의 기본 별 패턴을 star리스트에 담는다.
• N이 3이 아닌경우 3이 될때까지 3으로 나눈 몫을 cnt에 담는다.
즉, N이 27이면 cnt는 2가 되고 '3의 패턴 --cnt=1--> 9의 패턴 --cnt=2--> 27의 패턴' 을 얻을 수 있게 된다.
• cnt만큼 별 패턴을 그리는 draw()함수를 호출하는데 이때 인자로 전 함수에서 수행되어 만들어진 패턴을 넣는다.
(초기값은 star = ["***", "* *", "***"])
• draw()함수에서 만약 n이 9일때 tmp를 구해보면 다음과 같다.
tmp = ["*********",
"* ** ** *",
"*********",
"*** ***",
"* * * *",
"*** ***",
"*********",
"* ** ** *",
"*********"]
• 이렇게 만들어진 star리스트(tmp를 반환한)를 한 줄 씩 출력하면 된다.