나이트가 이동할수 있는 케이스를 BFS로 접근했다.
일반적인 좌우상하로 움직이는 미로찾기와 유사하지만,
이동경로가 좌우상하가 아닌 설명에있는 나이트의 움직임대로만 바꿔서 처리해주면 될것같다.
from collections import deque
n = int(input())
for _ in range(n):
l = int(input())
visited = [[0]*l for _ in range(l)]
start = tuple(map(int,input().split()))
end = tuple(map(int,input().split()))
if start == end:
print(0)
continue
x = [2,1,-1,-2,-2,-1,1,2]
y = [1,2,2,1,-1,-2,-2,-1]
need_visit = deque()
need_visit.append(start)
while(need_visit):
breaker = False
node = need_visit.popleft()
for i in range(8):
nx = node[0] + x[i]
ny = node[1] + y[i]
if (nx <0 or nx >=l or ny <0 or ny >=l or visited[nx][ny] != 0):
continue
visited[nx][ny] = visited[node[0]][node[1]] + 1
need_visit.append((nx,ny))
if nx == end[0] and ny == end[1]:
print(visited[nx][ny])
breaker = True
break
if breaker == True:
break
별도의 함수 없이 짜다보니 탐색이 끝난순간 for문과 while문을 다 빠져나가려고 짜다보니 breaker라는 변수를 만들어서 바깓쪽 while문을 빠져나가게 만들었다.