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)
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#101 백준 파이썬 [1181] 단어 정렬 (0) | 2019.09.24 |
---|---|
#100 백준 파이썬 [2217] 로프 - 그리디 알고리즘 (0) | 2019.09.24 |
#98 백준 파이썬 [1904] 01타일 - 점화식 (0) | 2019.09.23 |
#97 백준 파이썬 [6064] 카잉 달력 (0) | 2019.09.23 |
#96 백준 파이썬 [1793] 타일링 (0) | 2019.09.19 |