문제에서 규칙을 찾으려고 했고, 그 규칙은 상자가 하나 늘어날 때마다 움직이는 정도가 2배씩 늘어난다는 것이었다.
예를 들어, N = 3인 경우에는 1을 제외하고 나머지 값들이 2칸씩 우,하,좌,상 방향으로 이동한다. N = 5인 경우에는 N = 3인 경우를 충족시킨 뒤, 4칸씩 우,하,좌,상 방향으로 이동한다. 이 부분을 통해 위치를 이동시키는 배열과 실제 이동하는 배열을 두고 문제를 풀었다.
N = int(input()) # NxN
M = int(input()) # M의 위치는?
array = [[0 for col in range(N)] for row in range(N)]
num = int((N-1)/2)
array[num][num] = 1
check1 = num
check2 = num
lst_move = [[-1,0],[1,0],[0,-1],[-1,0]]
lst = [[0,1],[1,0],[0,-1],[-1,0]]
tmp = 1
for i in range(1,num+1):
for j in range(4):
check1 += lst_move[j][0]
check2 += lst_move[j][1]
for k in range(i*2):
tmp += 1
array[check1+k*lst[j][0]][check2+k*lst[j][1]] = tmp
if k == (i*2-1):
check1 = check1+k*lst[j][0]
check2 = check2+k*lst[j][1]
for arr in array:
print(' '.join(str(a) for a in arr))
for i in range(N):
if M in array[i]:
print(i+1,array[i].index(M)+1)
exit()