알고리즘
백준 7562번 : 나이트의 이동(python)
jenyy
2021. 1. 5. 21:00
https://www.acmicpc.net/problem/7562
7562번: 나이트의 이동
체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수
www.acmicpc.net
from collections import deque
t = int(input())
dx = [-1,-2,-2,-1,1,2,2,1]
dy = [-2,-1,1,2,2,1,-1,-2]
def bfs(x,y,target_x,target_y):
if x==target_x and y==target_y:
return 0
q = deque()
q.append((x,y,0))
while q:
x, y, count = q.popleft()
for i in range(8):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < l and 0 <= ny < l and data[nx][ny] == 0:
data[nx][ny] = 1
if nx == target_x and ny == target_y:
return count+1
else:
q.append((nx, ny, count+1))
for _ in range(t):
l = int(input())
data = [[0]*l for _ in range(l)]
a,b = map(int,input().split())
data[a][b] = 1
target_x,target_y = map(int,input().split())
print(bfs(a,b,target_x,target_y))