Python/백준

7562_나이트의 이동

728x90

https://www.acmicpc.net/problem/7562

 

7562번: 나이트의 이동

체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수

www.acmicpc.net

 

 

역시 bfs를 이용한 문제이다! 이전에 풀었던 문제들과 유형이 같다.

 

dx,dy가 기존에 상,하,좌,우였던 것을 나이트의 이동에 맞춰서 바꿔주기만 하면 쉽게 풀 수 있다.

 

import sys
from collections import deque
input = sys.stdin.readline
t = int(input())

dx = [-2,-1,1,2,2,1,-1,-2]
dy = [1,2,2,1,-1,-2,-2,-1]

for _ in range(t):
    l = int(input())
    sx,sy= map(int,input().split())
    ex,ey = map(int,input().split())
    visited = [ [0 for _ in range(l)]  for __ in range(l)]
    q = deque([[sx,sy]])

    while q:
        x,y = q.popleft()
        if x == ex and y == ey:
            print(visited[x][y])
            break
        for i in range(8):
            nx,ny = x + dx[i],y+ dy[i]
            if 0<= nx < l and 0 <= ny < l and visited[nx][ny] == 0:
                q.append([nx,ny])
                visited[nx][ny] = visited[x][y] +1
728x90

'Python > 백준' 카테고리의 다른 글

1753_최단경로  (0) 2022.04.05
1707_이분그래프  (0) 2022.04.04
2206_벽부수고 이동하기  (0) 2022.04.02
1697_숨바꼭질  (0) 2022.04.01
1012_유기농 배추  (0) 2022.03.28