import sys
from collections import deque
input = sys.stdin.readline
def bfs(sx,sy,ex,ey):
q = deque()
q.append([sx,sy])
dist[sx][sy] = 1
while q:
x,y = q.popleft()
if x == ex and y == ey:
print(dist[ex][ey]-1)
return
for i in range(8):
nx = dx[i] + x
ny = dy[i] + y
if 0 <= nx < n and 0 <= ny < n and dist[nx][ny] == 0:
q.append([nx,ny])
dist[nx][ny] = dist[x][y] + 1
t = int(input())
dx = [-1, -2, -2, -1, 1, 2, 2, 1]
dy = [2, 1, -1, -2, -2, -1, 1, 2]
for _ in range(t):
n = int(input())
dist = [[0]*n for _ in range(n+1)]
sx, sy = map(int,input().split())
ex, ey = map(int,input().split())
bfs(sx,sy,ex,ey)
# 일직선상으로 이동이 불가하고 현재 범위에서 한 칸은 다 띄워두고 가야 하는 문제로 범위만 제대로 설정하면 bfs를 사용해서 어렵지 않게 풀 수 있는 문제.
# 이동 횟수와 관련된 문제로 BFS를 사용해 풀어야 한다.(최단거리를 구하는 문제이기 때문 -> 가중치가 있다면 다익스트라 사용 그러나 지금은 가중치가 없기에 BFS로도 충분히 풀이 가능)
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][자료구조/힙] 1766.문제집 (파이썬/Python) (0) | 2022.01.24 |
---|---|
[백준][DFS/DP] 1707. 이분 그래프 (파이썬/Python) (0) | 2022.01.20 |
[백준][Dijkstra/다익스트라] 1504번.특정한 최단 경로 (파이썬/Python) (0) | 2022.01.13 |
[백준][자료구조/힙] 1715.카드 정렬하기 (파이썬/Python) (0) | 2022.01.11 |
[백준][DFS] 1967. 트리의 지름 (파이썬/Python) (0) | 2022.01.10 |