달팽이는 1부터 N*N까지의 숫자가 시계방향으로 이루어져 있다.
다음과 같이 정수 N을 입력 받아 N크기의 달팽이를 출력하시오.
[예제]
N이 3일 경우,
N이 4일 경우,
[제약사항]
달팽이의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어진다.
[출력]
각 줄은 '#t'로 시작하고, 다음 줄부터 빈칸을 사이에 두고 달팽이 숫자를 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
def make_snail(N):
arr = [[0]*N for _ in range(N)]
num = 1
x,y = 0,0
direction = 0 # 0 : Right, 1 : down, 2 : left, 3 : up
while num <= N * N:
arr[x][y] = num
num+=1
dx= [0,1,0,-1]
dy = [1,0,-1,0]
nx = x + dx[direction]
ny = y + dy[direction]
if nx < 0 or nx >= N or ny < 0 or ny >= N or arr[nx][ny] != 0:
direction = (direction + 1) % 4
nx = x + dx[direction]
ny = y + dy[direction]
x,y = nx,ny
return arr
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
N = int(input())
snail = make_snail(N)
print(f'#{test_case}')
for i in range(N):
for j in range(N):
print(snail[i][j],end=" ")
print()