Algorithms/Breadth First Search
[BFS 알고리즘] 나이트의 이동
잉숭
2021. 8. 1. 17:05
기출: BOJ #7562
dx, dy = [2,2,1,1,-1,-1,-2,-2],[1,-1,2,-2,2,-2,1,-1]
tc = int(input())
for _ in range(tc):
n = int(input())
board = []
visited = [[False for _ in range(n)] for __ in range(n)]
start = list(map(int,input().split()))
targetX, targetY = map(int,input().split())
queue = [[start,0]]
while queue:
cur = queue.pop(0)
curX, curY = cur[0][0], cur[0][1]
curVal = cur[1]
if curX==targetX and curY==targetY:
print(curVal)
break
for dir in range(8):
mx = curX + dx[dir]
my = curY + dy[dir]
if mx<0 or my<0 or mx>=n or my>=n: continue
if visited[mx][my]: continue
visited[mx][my] = True
queue.append([[mx,my],curVal+1])