BOJ 2448 별 찍기 - 11

LONGNEW·2021년 1월 19일
0

BOJ

목록 보기
76/333

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

  • N(N = 3×2^k (3, 6, 12, 24, 48, ...)) (0 ≤ k ≤ 10, k는 정수)

output :

  • N번째 줄까지 별을 출력
    별을 지우는 방식으로 시작하고 있었는데... x, y의 위치를 지정하지 않고 하다가 실패했다.

x, y의 위치 부터 찾은 다음 n이 3이 될 때까지 동일한 3개의 화면으로 계속 분할 하는것이 맞다.

import sys

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

def star(x, y, n):
    if n == 3:
        graph[x][y] = '*'
        graph[x + 1][y - 1] = '*'
        graph[x + 1][y + 1] = '*'
        graph[x + 2][y - 2] = '*'
        graph[x + 2][y - 1] = '*'
        graph[x + 2][y] = '*'
        graph[x + 2][y + 1] = '*'
        graph[x + 2][y + 2] = '*'
    else:
        star(x + n // 2, y - n // 2, n // 2)
        star(x + n // 2, y + n // 2, n // 2)
        star(x, y, n // 2)

star(0, n - 1, n)
for i in range(len(graph)):
        print("".join(graph[i]))

0개의 댓글