백준 / 나이트의 이동 / 7562
Question
문제링크
Silver 1
Logic
기본 구조 :bfs
1. 나이트의 이동가능한 위치를 dx, dy로 정의한다.
2. 시작위치부터 이동 가능한 위치를 queue에 추가하여 목표 위치에 도달할 때 까지 탐색한다.
Code
from collections import deque
from sys import stdin
dx = [-1, -2, -2, -1, 1, 2, 2, 1]
dy = [2, 1, -1, -2, -2, -1, 1, 2]
def bfs(ax,ay,bx,by):
q = deque()
q.append([ax,ay])
li[ax][ay] = 1
while(q):
a,b = q.popleft()
if a==bx and b ==by:
print(li[bx][by]-1)
return
for i in range(8):
x=a+dx[i]
y=b+dy[i]
if 0 <= x < L and 0 <= y < L and li[x][y] == 0:
q.append([x, y])
li[x][y] = li[a][b] + 1
for i in range(int(stdin.readline())):
L = int(stdin.readline())
li = [[0]*L for _ in range(L)]
ax,ay = map(int,stdin.readline().split())
bx,by = map(int,stdin.readline().split())
bfs(ax,ay,bx,by)
Author And Source
이 문제에 관하여(백준 / 나이트의 이동 / 7562), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@swany0509/백준-나이트의-이동-7562저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)