💡문제접근
- 가장자리를 따라서
*
이 출력되도록 설정하고 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:
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