내 맴

[ BAEKJOON ] No. 2447 : 별 찍기 - 10 본문

Algorithm/Baekjoon 문제풀이

[ BAEKJOON ] No. 2447 : 별 찍기 - 10

뺙사우르수 2020. 3. 24. 18:14
728x90

문제 ) 

https://www.acmicpc.net/problem/2447

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다.

www.acmicpc.net

 

N=3 일 때, 

 

N= 9 일 때,

가로가 x축, 세로가 y축이라고 하면, 

 

< 노란색으로 색칠된 부분 >

: X= 1, 4, 7 
그러므로, 3으로 나눈 나머지가 1이다

 

< 파란색으로 색칠된 부분 >

: X= 3, 4, 5 이므로,  3으로 나눈 몫이 1이다. 

 

 

- python code 

def drawstar(star):
    printstar=[]
    for i in range(3*len(star)): #행 의미
        if i//len(star)==1: #3으로 나눈 몫이 1일 때
            printstar.append(star[i%len(star)]+" "*len(star)+star[i%len(star)])
        else:
            printstar.append(star[i%len(star)]*3) 
    return printstar
    

star=["***", "* *", "***"]
N=int(input())
k=0
while N!=3:
   N= int(N/3)
   k+=1

for i in range(k):
    star=drawstar(star)
for i in star:
    print(i)
728x90