def snail(i,j,dir,cnt): # i, j, 방향, 몇번 움직였는지 확인
while cnt < n*n:
if 0 <= i + x[dir % 4] < n and 0 <= j + y[dir % 4] < n:
# board 범위 안 넘어가는 조건
if board[i+x[dir%4]][j+y[dir%4]] == 0:
# 다음 값에 방문한 적이 없다는 조건
i = i+x[dir%4] # i 변경
j = j+y[dir%4] # j 변경
cnt += 1 # 움직인 횟수 변경
board[i][j] = cnt # board값 변경
else:
dir += 1 # 방향 변경
else:
dir += 1 # 방향 변경
T = int(input())
x = [0,1,0,-1]
y = [1,0,-1,0]
for tc in range(1,1+T):
n = int(input())
if n != 1:
board = [[0]*n for _ in range(n)]
board[0][0] = 1 # 시작점
snail(0,0,0,1) # i,j,방향,움직인 횟수(시작점 방문 가정)
print('#{}'.format(tc))
for q in range(n):
for w in range(n):
print(board[q][w], end = ' ')
print()
else:
print('#{}'.format(tc))
print(1)

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다