만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

나이트의 최소 이동 횟수

면접 대비

시간 제한1초메모리 제한128 MB

요약
막힌 칸이 있는 격자에서 나이트로 K에서 X까지 가는 최소 이동 횟수를 구하고 도달할 수 없으면 -1을 출력합니다.
난이도

쉬움10점 중 3점

유형
BFS, 행렬
정답자
아직 제출이 없습니다

문제

체스에서 나이트는 한 방향으로 두 칸 간 다음, 그와 수직인 방향으로 한 칸 더 간다. 나이트는 다른 칸을 뛰어넘으므로 도착 칸만 비어 있으면 되고, 지나가는 자리가 막혀 있어도 상관없다. 아래 그림에서 나이트는 X로 표시된 칸 중 어디로든 갈 수 있다.

격자와 출발 칸, 도착 칸이 주어진다. 나이트가 출발 칸에서 도착 칸까지 가는 데 필요한 최소 이동 횟수를 구하라. 격자에는 막힌 칸이 있을 수 있고, 나이트는 막힌 칸으로 가지 못한다.

입력

입력은 테스트 케이스 하나로 이루어진다. 첫 줄에 격자의 높이 nn과 너비 mm이 주어진다 (2≤n,m≤1002 \le n, m \le 100). 다음 nn개 줄에는 각각 mm개의 문자가 주어져 격자를 나타낸다. 격자는 .(빈 칸), #(막힌 칸), K(나이트가 출발하는 칸), X(나이트가 도착해야 하는 칸) 네 가지 문자로만 이루어진다. K와 X는 각각 정확히 하나씩 있다.

출력

나이트가 도착 칸까지 가는 데 필요한 최소 이동 횟수를 한 줄에 정수 하나로 출력한다. 도착할 수 없으면 -1을 출력한다. 공백은 출력하지 않는다.

예제2

  1. 예제 1

    입력
    5 4
    K...
    ....
    .#..
    .#..
    ...X
    
    예상 출력
    5
    
  2. 예제 2

    입력
    3 3
    K..
    .X.
    ...
    
    예상 출력
    -1