https://www.acmicpc.net/problem/2447
k
제곱 = N
기준 k
를 활용하여 star
구현x
, y
를 keyword argument로 설정k
값에서 가운데 부분을 비우고, k
를 하나 줄인 상태로 재귀x
, y
설정def star(k, x=0, y=0): # k : 거듭제곱 수, x : 시작 x값, y: 시작 y값
global arr
mid = 3**(k-1)
if k == 1: # 길이가 3인 배열인 경우
arr[y+k][x+k] = ' '
else :
# 현재 k값 기준 가운데를 비우는 부분
for i in range(mid, mid*2):
for j in range(mid, mid*2):
arr[y+i][x+j] = ' '
# 빈부분 기준 테두리 부분 재귀함수
for i in range(y, y+3**k, mid):
for j in range(x, x+3**k, mid):
if i==mid and j==mid:
continue
star(k-1, i, j)
n = int(input())
arr = [['*']*n for _ in range(n)]
k, tmp = 0, n
while tmp != 1:
tmp //= 3
k += 1
star(k)
for i in range(n):
print(''.join(arr[i]))
재귀랑 친해지려고 노력중,,,생각보다 쉽지 않다...백트래킹도 어려워서 더 많이 해봐야 할 것 같다!