만드는 중입니다

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

유령의 집 탈출하기

면접 대비

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

요약
회전하는 유령의 시야에 들키지 않고 입구에서 출구까지 가는 최소 시간을 구합니다.
난이도

보통10점 중 5점

유형
BFS, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

석준이는 오랜만에 놀이공원에 놀러 가기로 했습니다. 친구들과 나눈 대화는 다음과 같습니다.

  • 친구A: 유령의 집은 너무 무서울 것 같지 않아? 그냥 롤러코스터 타러 가자...
  • 석준: 에이~ 유령의 집이 뭐가 무서워? 줄도 없는데 빨리 들어갔다 나오자!
  • 친구B: 그래? 그러면 네가 앞장서서 가면 되겠다. 잘 부탁해~
  • 석준: ....

사실 석준이는 누구보다 유령을 무서워하지만, 이미 허세를 부려 돌이킬 방법이 없었습니다.

유령의 집은 세로 NN칸, 가로 MM칸 크기이며 다음과 같이 구성되어 있습니다.

  • 빈칸(.): 석준이가 움직일 수 있는 공간입니다.
  • 벽(#): 석준이가 움직일 수 없는 공간입니다.
  • 유령(0, 1, 2, 3): 각 숫자는 유령이 처음 바라보는 방향입니다. (0: 오른쪽, 1: 아래, 2: 왼쪽, 3: 위)

유령이 바라보는 방향에 벽이나 다른 유령이 있으면 시야가 가로막혀 그 뒤의 공간은 볼 수 없습니다. 다만 시야가 가로막히지 않았고 바라보는 방향에 석준이가 있다면, 유령은 거리와 상관없이 석준이를 발견할 수 있습니다. 각 유령은 매초 시계 방향으로 90° 회전하며, 회전하는 동안에는 석준이를 볼 수 없습니다.

석준이는 매초 상하좌우로 인접한 빈칸으로 이동하거나 제자리에 머무를 수 있습니다.

아르바이트 경험이 있는 석준이는 유령의 위치와 지도를 모두 알고 있으며, 어떤 유령에게도 발견되지 않고 최대한 빨리 탈출하려고 합니다.

긴장감에 머리가 새하얘진 석준이를 위해, 그 방법을 찾아주세요.

입력

첫째 줄에 유령의 집의 크기 NN, MM이 주어집니다. (2≤N,M≤2002 \le N, M \le 200)

둘째 줄에 입구의 좌표 Sx,SyS_x, S_y와 출구의 좌표 Ex,EyE_x, E_y가 주어집니다. (1≤Sx,Ex≤N1 \le S_x, E_x \le N, 1≤Sy,Ey≤M1 \le S_y, E_y \le M)

좌표 (x,y)(x, y)는 위에서 xx번째, 왼쪽에서 yy번째 칸을 뜻합니다.

입구와 출구는 빈칸이며, 두 좌표는 서로 다릅니다. 또한 시각 00에 유령이 입구를 바라보고 있지 않음이 보장됩니다.

다음 NN개의 줄에 유령의 집의 상태가 주어집니다.

출력

유령의 집을 탈출하는 데 걸리는 최소 시간을 출력합니다.

유령에게 발견되지 않고 탈출할 방법이 없다면 GG를 출력합니다.

예제3

  1. 예제 1

    입력
    3 5
    3 3 1 1
    .....
    0##0.
    .....
    
    예상 출력
    12
    
  2. 예제 2

    입력
    8 4
    8 1 2 4
    #31#
    #...
    #..#
    #..#
    #..#
    #..#
    #..#
    ...#
    
    예상 출력
    15
    
  3. 예제 3

    입력
    8 4
    8 1 2 4
    #11#
    #...
    #..#
    #..#
    #..#
    #..#
    #..#
    ...#
    
    예상 출력
    GG