몽상실현개발주의

[BOJ] 2448 / 별 찍기 - 11 / Python 파이썬 본문

Algorithm PS/BOJ

[BOJ] 2448 / 별 찍기 - 11 / Python 파이썬

migrationArc 2021. 6. 28. 09:05

[BOJ] 2448 / 별 찍기 - 11 / Python 파이썬

[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 / 별 찍기 와 같은 프랙탈 문제이다.

 

기본 모양을 두고, 그 모양을 이용하여 다음 모양을 만들어 가는 것을 진행하였다.

 

  1. 주어진 모양의 삼각형의 아래에 왼쪽과 오른쪽 두쌍의 삼각형을 만들고
  2. 전체 모양을 만들기 위해 주어진 삼각형에 공간을 삽입하여 구조를 만들어 주었다.

 

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)

 

Comments