본문 바로가기
코딩 테스트/백준

백준 2447번 - 별 찍기 - 10

by pumkinni 2022. 8. 11.

백준 2447번 - 별 찍기 - 10


 

 

2447번: 별 찍기 - 10

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

www.acmicpc.net

 

코드

1. 패턴1(3) => (1,1)의 공백 생성, 주위는 별1개씩 => 크기 : (3,3)
2. 패턴2(9) => (3,3)의 공백 생성, 주위는 패턴1 => 크기 : (9,9)
3. 패턴3(27) => (9,9)의 공백 생성, 주위는 패턴2, 패턴2 주위는 패턴1 => 크기 : (27, 27)
4. 패턴n(3**n) => (3**n/3,3**n/3)의 공백 생성, 주위는 패턴n-1, 패턴n-1주위는 패턴 n-2......... => 크기 : (3**n, 3**n)
N = int(input())
pattern = 1
stars = ['*']

while N != 1:
    next_stars = []
    for star in stars:
        next_stars.append(star*3)
    for star in stars:
        next_stars.append(star+' '*int((3**(pattern)/3))+star)
    for star in stars:
        next_stars.append(star*3)
    N /= 3
    pattern += 1
    stars = next_stars

for star in next_stars:
    print(star)

 

결과