T = int(input())
dx = [-2,-1,1,2,2,1,-1,-2]
dy = [-1,-2,-2,-1,1,2,2,1]
for tc in range(T):
l = int(input())
array = [list(map(int,input().split())) for _ in range(2)]
start = array[0][:]
end = array[1][:]
if start == end:
print(0)
else:
result = 0
visited = [[0]*l for _ in range(l)]
visited[start[0]][start[1]] = 1
stack = []
stack.append((start[0],start[1],0))
while stack:
x,y,cnt = stack.pop(0)
if x == end[0] and y == end[1]:
result = cnt
break
for i in range(8):
nx = x + dx[i]
ny = y + dy[i]
if 0<=nx<l and 0<=ny<l:
if not visited[nx][ny]:
visited[nx][ny] = 1
stack.append((nx,ny,cnt+1))
print(result)
BFS를 이용해서 거리 변수만 추가해주면 되는 문제였다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] 20056 마법사 상어와 파이어볼 (0) | 2021.01.10 |
---|---|
[BOJ] 20057 마법사 상어와 토네이도 (0) | 2021.01.10 |
[BOJ] 16918 봄버맨(풀이 방식 2종류) (0) | 2021.01.10 |
[BOJ] 16236 아기상어 (0) | 2021.01.10 |
[BOJ] 14891 톱니바퀴 (0) | 2021.01.09 |