만드는 중입니다

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

빠른 오름차순 숫자 탐색

면접 대비

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

요약
5 x 5 격자에서 시작 칸부터 1에서 6까지 숫자가 적힌 칸을 순서대로 방문하는 최소 이동 횟수를 구합니다.
난이도

보통10점 중 4점

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

문제

5 x 5 크기의 보드가 주어진다. 보드는 1 x 1 크기의 정사각형 격자로 이루어져 있다. 각 격자에는 -1, 0, 1, 2, 3, 4, 5, 6 중 하나의 수가 적혀 있다. 격자의 위치는 (r, c)로 나타낸다. r은 행 번호, c는 열 번호다. 행 번호는 맨 위가 0이고 아래로 갈수록 1씩 증가한다. 열 번호는 맨 왼쪽이 0이고 오른쪽으로 갈수록 1씩 증가한다. 따라서 맨 왼쪽 위 칸은 (0, 0), 맨 오른쪽 아래 칸은 (4, 4)다. -1이 적힌 칸으로는 이동할 수 없고, 0, 1, 2, 3, 4, 5, 6이 적힌 칸으로는 이동할 수 있다.

학생이 (r, c) 위치에 있다. 한 번의 이동으로 상, 하, 좌, 우 중 한 방향으로 한 칸 움직일 수 있다. 학생은 (r, c)에서 출발해 1, 2, 3, 4, 5, 6이 적힌 칸을 이 순서대로 방문하려고 한다. 보드에는 1부터 6까지 각 숫자가 적힌 칸이 하나씩 있다. 1, 2, 3, 4, 5, 6이 적힌 칸은 여러 번 방문할 수 있다. i가 적힌 칸에서 i + 1이 적힌 칸으로 이동할 때(1 ≤ i ≤ 5) 다른 번호가 적힌 칸을 방문해도 된다. 마찬가지로 (r, c)에서 1이 적힌 칸으로 이동할 때도 다른 번호가 적힌 칸을 방문해도 된다.

학생이 (r, c)에서 출발해 1, 2, 3, 4, 5, 6이 적힌 칸을 이 순서대로 방문하는 최소 이동 횟수를 출력하자.

입력

첫 번째 줄부터 다섯 번째 줄에 걸쳐 보드의 각 칸에 적힌 수가 순서대로 주어진다. i번째 줄의 j번째 수는 보드의 (i - 1)번째 행, (j - 1)번째 열에 적힌 수를 나타낸다.

다음 줄에 학생의 현재 위치 r, c가 빈칸을 사이에 두고 주어진다.

출력

학생이 (r, c)에서 출발해 1, 2, 3, 4, 5, 6이 적힌 칸을 이 순서대로 방문하는 최소 이동 횟수를 출력한다. 이 순서대로 방문할 수 없는 경우 -1을 출력한다.

제한

0 ≤ r, c ≤ 4

(r, c) 칸에는 0이 적혀 있다.

1, 2, 3, 4, 5, 6이 적힌 칸은 각각 하나씩 주어진다.

예제3

  1. 예제 1

    입력
    0 0 1 0 0
    0 0 2 0 0
    0 0 3 0 0
    0 0 4 0 0
    0 0 5 6 -1
    0 1
    
    예상 출력
    6
    
  2. 예제 2

    입력
    0 0 1 0 0
    0 0 2 0 0
    0 0 3 0 0
    0 0 4 6 0
    0 0 5 -1 0
    0 1
    
    예상 출력
    7
    
  3. 예제 3

    입력
    0 0 -1 1 0
    0 0 -1 2 0
    0 0 -1 3 0
    0 0 -1 4 0
    0 0 -1 5 6
    0 1
    
    예상 출력
    -1