def star(k):
if k == 3:
cnt = 0
for i in range(3):
for j in range(3):
if cnt != 4:
board[i][j] = "*"
cnt += 1
return
star(k//3)
a = k//3
for i in range(3):
for j in range(3):
if i == 1 and j == 1:
continue
for t in range(a) :
board[a*i+t][a*j:a*(j+1)] = board[t][:a]
n = int(input())
board = [[" "]*n for _ in range(n)]
star(n)
for i in range(n):
for j in range(n):
print(board[i][j], end="")
print()
직접 해결하지 못했다. 특히 "board[a*i+t][a*j:a*(j+1)] = board[t][:a]" 이 부분을 이해하는데 오래 걸렸다.
풀이를 해보자면 k가 3일 때는 패턴 모양을 완성시키고 재귀 종료 조건으로 한다.
그 다음 k의 크기가 몇이든 크게 9등분한다. 9등분을 재귀를 돌면서 패턴에 맞게 채우는 방식이다.
패턴을 채울 때 가운데는 continue하고 나머지는 첫 번째 패턴을 그대로 복사? 하는 방식이다. 첫 번째 패턴을 복사하는 부분이 "board[a*i+t][a*j:a*(j+1)] = board[t][:a]" 이 부분이다.
크게 3등분하는 개념까지는 스스로 도달했지만 패턴을 완성시키는 부분에서 막혔었다.