시간 제한메모리 제한제출정답맞힌 사람정답 비율
3 초 512 MB90272441.379%

문제

5 x 5 크기의 보드가 주어진다. 보드는 1 x 1 크기의 정사각형 격자로 이루어져 있다. 보드의 격자에는 -1, 0, 1, 7중 하나의 숫자가 적혀 있다. 격자의 위치는 (r, c)로 표시한다. r은 행 번호, c는 열 번호를 나타낸다. 행 번호는 맨 위 위치가 0이고 아래 방향으로 1씩 증가한다. 열 번호는 맨 왼쪽 위치가 0이고 오른쪽 방향으로 1씩 증가한다. 즉, 맨 왼쪽 위 위치가 (0, 0), 맨 아래 오른쪽 위치가 (4, 4)이다. -1이 적혀 있는 칸으로는 이동할 수 없고 0, 1, 7이 적혀 있는 칸으로는 이동할 수 있다.

현재 한 명의 학생이 (r, c) 위치에 있고 한 번의 이동으로 상, 하, 좌, 우 방향 중에서 한 방향으로 한 칸 걸어갈 수 있다. 또한 학생은 한 번의 이동으로 상, 하, 좌, 우 방향 중에서 한 방향으로 -1이 적혀 있는 칸을 만나거나 보드의 밖으로 벗어나서 이동할 수 없을 때까지 뛰어갈 수 있다. 단, 뛰어가는 중에 7이 적혀 있는 칸을 만나면 이동을 끝내고 해당 칸에서 멈춘다. 뛰어가다가 멈추기 전까지 중간에 지나가는 칸은 방문하지 않은 것으로 간주한다. 걸어가는 동작과 뛰어가는 동작 모두 1회 이동으로 생각한다. 학생이 현재 위치 (r, c)에서 시작하여 1이 적혀 있는 칸으로 이동하기 위한 최소 이동 횟수를 출력하자. 학생이 현재 위치 (r, c)에서 시작하여 1이 적혀 있는 칸으로 이동할 수 없는 경우 –1을 출력한다. 보드에는 1이 적혀 있는 격자가 1개 주어진다.

입력

첫 번째 줄부터 다섯 개의 줄에 걸쳐 보드의 정보가 순서대로 주어진다. i번째 줄의 j번째 숫자는 보드의 (i - 1)번째 행, (j - 1)번째 열의 정보를 나타낸다. 보드의 정보는 -1, 0, 1, 7중 하나이다.

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

출력

학생이 현재 위치 (r, c)에서 1이 적혀 있는 칸에 도착하기 위한 최소 이동 횟수를 출력한다. 현재 위치 (r, c)에서 1이 적혀 있는 칸으로 이동할 수 없는 경우 -1을 출력한다.

제한

  • 0 ≤ r, c ≤ 4
  • 학생의 현재 위치 (r, c)에는 0이 적혀 있다.
  • 1이 적혀 있는 칸이 1개 주어진다.

예제 입력 1

0 0 1 0 0
0 7 -1 0 0
0 0 0 0 0
0 0 -1 0 0
0 0 0 -1 0
4 1

예제 출력 1

3

(4, 1) -> (1, 1) -> (0, 1) -> (0, 2)가 최소 이동이다.

예제 입력 2

0 0 1 0 0
0 7 -1 0 0
0 0 0 0 0
0 0 -1 0 0
0 0 0 -1 0
4 4

예제 출력 2

3

(4, 4) -> (0, 4) -> (0, 3) -> (0, 2)가 최소 이동이다.

예제 입력 3

-1 7 0 7 0
0 -1 7 7 7
0 0 -1 7 7
0 0 0 -1 1
0 0 0 0 -1
1 0

예제 출력 3

-1

(1, 0)에서 1이 있는 (3, 4)로 이동할 방법은 없다.

출처