1. 문제

www.acmicpc.net/problem/2447

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net

2. 접근방법

오랜만에 풀어보는 별 찍기

 

재귀적으로 풀라고 하는데

그냥 for문으로 풀어도 될 거 같기도 하고?

 

***

* *

***

 

처음 이 모양에서

저 모양을 한몸으로 생각하고 같은거 3개 탕 탕 탕

밑에는 탕 띄고 탕

그 밑에는 탕 탕 탕

 

줄여서

탕 탕 탕

탕 띄 탕

탕 탕 탕

 

이걸 반복 시키면 된다.

 

코드로 보면

별 찍기는 만들고 여러개 찍어봐야 제 맛

 

3. 파이썬 코드

from copy import deepcopy

start = []
start.append('***')
start.append('* *')
start.append('***')
N = int(input())

def recur(n, S) :
    if(n == N):
        for i in range(n):
            print(S[i])
        return
    newS = deepcopy(S)
    for i in range(n):
        newS[i] += S[i] * 2
        newS.append(S[i])
        newS[n+i] += ' '*n
        newS[n + i] += S[i]
    for i in range(n):
        newS.append(newS[i])
    recur(n*3,newS)

recur(3,start)

4. 마치며

재귀 푸는 김에 같이 풀어본 재귀 별찍기

+ Recent posts