[핵심]
분할정복을 이용한 별찍기 문제이다.
분할정복을 좌표를 활용하여 문제를 문때는 항상 시작점을 (0,0)이 아닌
넘겨받은(X,Y)로 해야한다. -> 자꾸 실수함.
num = int(input())
lit =[["" for i in range(num)] for j in range(num)]
def recu(x,y,tf,cnt):
if cnt == 3:
for i in range(x,x+3):
for j in range(y,y+3):
lit[i][j] = "*"
if i == x+1:
if j == y+1:
lit[i][j] = " "
return
else:
cnt = cnt // 3
recu(x, y, tf,cnt)
recu(x, y+1*cnt, tf, cnt)
recu(x, y+2*cnt, tf, cnt)
recu(x+cnt, y, tf, cnt)
recu(x+cnt, y+2*cnt, tf, cnt)
recu(x+2*cnt,y, tf, cnt)
recu(x+2*cnt,y+cnt, tf, cnt)
recu(x+2*cnt,y+2*cnt, tf, cnt)
for i in range(x+cnt,x+cnt+cnt):
for j in range(y+cnt,y+cnt+cnt):
lit[i][j] =" "
return
recu(0,0,0,num)
for i in range(len(lit)):
print("".join(map(str,lit[i])))
댓글