[백준] 2447: 별 찍기 - 10 (Python)

JiKwang Jeong·2021년 9월 28일
0

문제📖

풀이🙏

  • n = 3^i 일때는 가운데를 비워두고 n = 3^(i-1) 일때의 별 배열이 찍히는 것을 확인한다.
  • start_recursion을 이용하여 재귀적으로 별 찍기를 수행한다.

코드💻

# 재귀 함수
def star_recursion(n):
    global data

    # 3x3 별찍기
    if n == 3:
        data[0][:3] = data[2][:3] = [1]*3
        data[1][:3] = [1, 0, 1]
        return

    # 3^i x 3^i 별 찍기
    a = n//3
    star_recursion(n//3)
    for i in range(3):
        for j in range(3):
            # 가운데 비워두기
            if i == 1 and j == 1:
                continue
            for k in range(a):
                data[a*i + k][a*j : a*(j+1)] = data[k][:a]

n = int(input())

data = [[0 for i in range(n)] for i in range(n)]

star_recursion(n)

for i in data :
    for j in i :
        if j :
            print('*', end = '')
        else :
            print(' ', end = '')
    print()
profile
기억보다 기록, 난리보다 정리

0개의 댓글