728x90
반응형
문제 출처:https://www.acmicpc.net/problem/7562
7562번: 나이트의 이동
체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수
www.acmicpc.net
풀이:
import sys
from collections import deque
T = int(input())
move = [(-2,1),(-1,2),(1,2),(2,1),(-2,-1),(-1,-2),(1,-2),(2,-1)]
def bfs(a,b):
queue = deque([(a,b)])
while queue:
x, y = queue.popleft()
if x == na and y == nb:
return board[x][y] -1
for xx, yy in move:
nx,ny = x+xx, y+yy
if 0 <= nx < N and 0 <= ny <N and board[nx][ny] == 0:
queue.append((nx,ny))
board[nx][ny] = board[x][y] + 1
for i in range(T):
N = int(input())
a, b = map(int,input().split(" "))
na, nb = map(int,input().split(" "))
board = [[0] * N for _ in range(N)]
board[a][b] = 1
print(bfs(a,b))
move 설정 제대로 해야함. 저것땜에 괜한것 고치고 있었다.
반응형
댓글