나이트의 최소 이동 횟수

면접 대비

시간 제한2초메모리 제한512 MB

요약
8×8 체스판에서 나이트가 시작 칸에서 목표 칸까지 이동하는 최소 횟수를 구한다.
난이도

보통10점 중 4점

유형
BFS, 그래프, 최단 경로, 구현
정답자
아직 제출이 없습니다

문제

8×88 \times 8 체스판이 주어진다. 각 칸은 11부터 88까지의 정수 두 개로 이루어진 순서쌍으로 나타낸다. 예를 들어 아래 그림에서 말 A는 (2,2)(2, 2)에, 말 B는 (4,3)(4, 3)에 놓여 있다.

나이트는 "L"자 모양으로 움직이는 말로, 다른 말을 뛰어넘어 최대 여덟 개의 칸 중 하나로 이동할 수 있다. 아래 그림에서 K는 나이트의 현재 위치이고, 11부터 88까지의 숫자는 나이트가 이동할 수 있는 칸을 나타낸다.

나이트의 시작 위치와 도착 위치가 주어질 때, 나이트를 시작 위치에서 도착 위치로 옮기는 데 필요한 최소 이동 횟수를 구하여라. 나이트는 이동 도중에 판을 벗어날 수 없다.

입력

11부터 88 사이의 정수 네 개가 주어진다. 앞의 두 정수는 나이트의 시작 위치를, 뒤의 두 정수는 도착 위치를 나타낸다.

출력

나이트를 시작 위치에서 도착 위치로 옮기는 데 필요한 최소 이동 횟수(음이 아닌 정수)를 출력한다. 나이트는 이동 도중에 판을 벗어날 수 없다.

예제2

  1. 예제 1

    입력
    2 1
    3 3
    
    예상 출력
    1
    
  2. 예제 2

    입력
    4 2
    7 5
    
    예상 출력
    2