Algorithm PS/BOJ
[BOJ] 2448 / 별 찍기 - 11 / Python 파이썬
migrationArc
2021. 6. 28. 09:05
[BOJ] 2448 / 별 찍기 - 11 / Python 파이썬
https://www.acmicpc.net/problem/2448
2448번: 별 찍기 - 11
첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수)
www.acmicpc.net
풀이
[BOJ] 2447 / 별 찍기 와 같은 프랙탈 문제이다.
기본 모양을 두고, 그 모양을 이용하여 다음 모양을 만들어 가는 것을 진행하였다.
- 주어진 모양의 삼각형의 아래에 왼쪽과 오른쪽 두쌍의 삼각형을 만들고
- 전체 모양을 만들기 위해 주어진 삼각형에 공간을 삽입하여 구조를 만들어 주었다.
N = int(input())
tri = [" * ", " * * ", "*****"]
N = N//3
def makeTri(tri):
L = len(tri)
for i in range(L):
# 주어진 모양을 복사하여 아래쪽에 두개의 모양 더 만들기
tri.append(tri[i] + " " + tri[i])
# 주어진 모양의 여백 만들기
tri[i] = " "*L + tri[i] + " "*L
return tri
cnt = 0
while N > 1:
N //= 2
cnt += 1
for i in range(cnt):
makeTri(tri)
for t in tri:
print(t)