본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#99 백준 파이썬 [2447] 별 찍기 - 10

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

 

#Solution

이 문제는 프랙탈 도형을 그리는 문제이다. 프랙탈 같은 경우는 최소 단위로 쪼갤 수 있기에 분할 정복 알고리즘(Divide and Conquer)을 이용해 풀 수 있다. 분할 정복 알고리즘의 단계를 분할, 정복, 합치기 세 개로 나누면 쉽게 기억할 수 있다.

def stars(n):
    matrix=[]
    for i in range(3 * len(n)):
        if i // len(n) == 1:
            matrix.append(n[i % len(n)] + " " * len(n) + n[i % len(n)])
        else:
            matrix.append(n[i % len(n)] * 3)
    return(list(matrix))

star = ["***","* *","***"]
n = int(input())
k = 0
while n != 3:
    n = int(n / 3)
    k += 1
    
for i in range(k):
    star = stars(star)
for i in star:
    print(i)