문제 : https://www.acmicpc.net/problem/7562
BFS 문제다.
전형적인 길찾기 문제에서 움직이는 위치만 달라진 문제다.
원래 십자모양으로 움직일 때는 dx = [1,-1,0,0], dy=[0,0,1,-1] 이런 식으로 했는데
이 움직이는 숫자만 달라진다.
import sys
from collections import deque
dx = [-2, -1, 1, 2, 2, 1, -1, -2]
dy = [-1, -2, -2, -1, 1, 2, 2, 1]
T = int(sys.stdin.readline())
for _ in range(T):
q = deque()
size = int(sys.stdin.readline())
x, y = [int(i) for i in sys.stdin.readline().split()]
cx, cy = [int(i) for i in sys.stdin.readline().split()]
q.append([x, y, 0])
v = [[False]*size for _ in range(size)]
v[y][x] = True
while q:
tx, ty, tt = q.popleft()
if cx == tx and cy == ty:
print(tt)
break
for i in range(8):
if 0 <= tx+dx[i] < size and 0 <= ty+dy[i] < size and not v[ty+dy[i]][tx+dx[i]]:
q.append([tx+dx[i], ty+dy[i], tt+1])
v[ty+dy[i]][tx+dx[i]] = True
'취준 > 백준' 카테고리의 다른 글
[백준][Python][2583][BFS] 영역 구하기 (0) | 2020.05.03 |
---|---|
[백준][Python][10026][BFS] 적록색약 (0) | 2020.05.01 |
[백준][Python][2667][BFS] 단지번호붙이기 (0) | 2020.04.29 |
[백준][Python][1012][BFS] 유기농 배추 (0) | 2020.04.28 |
[백준][Python][15970][구현] 화살표 그리기 (0) | 2020.04.12 |