문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 차례대로 별을 출력한다.
내 풀이
def draw(n, arr, x, y):
size = 4*n - 3
# 위, 아래
for i in range(size):
arr[x][y+i] = '*'
arr[x+size-1][y+i] = '*'
# 왼쪽, 오른쪽
for i in range(1, size-1):
arr[x+i][y] = '*'
arr[x+i][y+size-1] = '*'
# 재귀
if n > 1:
draw(n-1, arr, x+2, y+2)
n = int(input())
size = 4*n - 3
arr = [[' ']*size for _ in range(size)]
draw(n, arr, 0, 0)
for line in arr:
print(''.join(line))
코멘트
재귀를 이용하는 문제이다. n일 때는 (4n-3) x (4n-3) 크기의 사각형을 그린다. 그리고 4(n-1)-3 크기의 사각형을 안에 재귀적으로 그리면 된다.