import sys
input=sys.stdin.readline
def Draw(N):
if N == 1:
return ["*"]
patern = Draw(N // 3)
board = []
for p in patern:
board.append(p * 3)
for p in patern:
board.append(p + " " * (N // 3) + p)
for p in patern:
board.append(p * 3)
return board
N = int(input())
board = Draw(N)
print("\n".join(board))
N의 값이 무엇이던 앞서 나온 결과물을 바탕으로 반복되므로 for in 문으로 앞서 나온 패턴을 그대로 복사하여 필요한 개수만큼 곱하여 append해주어 새로 할당한다.
즉, 오른쪽으로 3배증가 (p * 3)
아래 쪽으로 3배 증가 (for문이 3개)
(i < N // 3 or i >= N - (N // 3)) or (j < N // 3 or j >= N - (N // 3))
*** -> 123
* * -> 456
*** -> 789
로 가정하여 보자면해결하기 위해 각 for문의 index를 곱해주며 계산하려했으나 종국엔 재귀가 아니라 for문으로 그리고있었다.
재귀로 해결하고자 방법을 바꾸었으나 잘 되지 않아 다른 해결 방법을 참고했다.
참고 블로그