백준 2447번 | 골드 5 | 별 찍기 - 10 | Python

kimminjunnn·2025년 10월 31일

알고리즘

목록 보기
220/315

문제 출처 : https://www.acmicpc.net/problem/2447

문제 파악

N은 3의 거듭제곱꼴이다.

N = 3

***
* *
*** 

N = 9

*********
* * * * *
*********
*********
* * * * *
*********
*********
* * * * *
*********

N = 3일때의 모양이 3x3 에 가운데만 없는 꼴이다.

별을 다 채우고 가운데를 파내는 방식으로 풀 수 있다.

저번에는 그렇게 풀었는데 사실 이 문제의 취지는 재귀를 활용해야 한다.

출처: https://cotak.tistory.com/38 [TaxFree:티스토리]
를 참고하여 공부했다.

해답 및 풀이

import sys
sys.setrecursionlimit(10**6)

def append_star(LEN):
    if LEN == 1:
        return ['*']

    Stars = append_star(LEN//3) 
    L = []  
    
    for S in Stars:
        L.append(S*3)
    for S in Stars:
        L.append(S+' '*(LEN//3)+S)
    for S in Stars:
        L.append(S*3)
    return L

n = int(sys.stdin.readline().strip())
print('\n'.join(append_star(n)))
profile
Frontend Engineers

0개의 댓글