[백준] 10994번 별 찍기 - 19

거북이·2023년 9월 23일
0

백준[실버4]

목록 보기
91/91
post-thumbnail

💡문제접근

  • 가장자리를 따라서 *이 출력되도록 설정하고 x축 방향 2칸, y축 방향 2칸을 옮겨서 다시 가장자리를 따라서 *을 출력하게 만드는 재귀함수를 작성하는 문제다.

💡코드(메모리 : 31648KB, 시간 : 60ms)

import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 6)

N = int(input())
L = 4 * N - 3
stars = [[" "] * L for _ in range(L)]


def recursive(T, y, x):
    L = 4 * T - 3
    if T == 1:
        stars[y][x] = "*"
        return
    else:
        # L = 2
        for i in range(L):
            stars[y + i][x] = "*"  # 왼쪽 변
            stars[y + L - 1][x + i] = "*"  # 아랫쪽 변
            stars[y + i][x + L - 1] = "*"  # 오른쪽 변
            stars[y][x + i] = "*"  # 위쪽 변
        T -= 1
        y += 2
        x += 2
        recursive(T, y, x)


recursive(N, 0, 0)
for row in stars:
    print(''.join(map(str, row)))

💡소요시간 : 24m

0개의 댓글