BOJ 2447 별 찍기 - 10

LONGNEW·2021년 1월 19일
0

BOJ

목록 보기
75/333

https://www.acmicpc.net/problem/2447
시간 1초, 메모리 256MB
input :

  • N N(은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3^k이며, 이때 1 ≤ k < 8)

output :

  • 첫째 줄부터 N번째 줄까지 별을 출력

n을 입력을 받아서 3으로 나눈 것을 star에 넣어준다.

n = 27이라면 범위를 9로 잡고 9개의 화면을 만지겠다는 의미.
9개 중 1개를 빼곤 또 별을 지워야 하기에
재귀로 4분할을 했듯. 9분할을 해버리자.

import sys

n = int(sys.stdin.readline())
graph = [["*"] * n for i in range(n)]

def star(x, y, n):

    for i in range(x + n, x + 2 * n):
        for j in range(y + n, y + 2 * n):
            graph[i][j] = " "
    if n != 1:
        part = n // 3
        star(x, y, part)
        star(x, y + n, part)
        star(x, y + 2 * n, part)
        star(x + n, y, part)
        star(x + n, y + 2 * n, part)
        star(x + 2 * n, y, part)
        star(x + 2 * n, y + n, part)
        star(x + 2 * n, y + 2 * n, part)


star(0, 0, n // 3)

for i in range(len(graph)):
    for j in range(len(graph)):
        print(graph[i][j], end="")
    print()

0개의 댓글