유령의 집 탈출하기
면접 대비시간 제한2초메모리 제한1024 MB
회전하는 유령의 시야에 들키지 않고 입구에서 출구까지 가는 최소 시간을 구합니다.
문제
석준이는 오랜만에 놀이공원에 놀러 가기로 했습니다. 친구들과 나눈 대화는 다음과 같습니다.
- 친구A: 유령의 집은 너무 무서울 것 같지 않아? 그냥 롤러코스터 타러 가자...
- 석준: 에이~ 유령의 집이 뭐가 무서워? 줄도 없는데 빨리 들어갔다 나오자!
- 친구B: 그래? 그러면 네가 앞장서서 가면 되겠다. 잘 부탁해~
- 석준: ....
사실 석준이는 누구보다 유령을 무서워하지만, 이미 허세를 부려 돌이킬 방법이 없었습니다.
유령의 집은 세로 칸, 가로 칸 크기이며 다음과 같이 구성되어 있습니다.
- 빈칸(
.): 석준이가 움직일 수 있는 공간입니다. - 벽(
#): 석준이가 움직일 수 없는 공간입니다. - 유령(
0,1,2,3): 각 숫자는 유령이 처음 바라보는 방향입니다. (0: 오른쪽,1: 아래,2: 왼쪽,3: 위)
유령이 바라보는 방향에 벽이나 다른 유령이 있으면 시야가 가로막혀 그 뒤의 공간은 볼 수 없습니다. 다만 시야가 가로막히지 않았고 바라보는 방향에 석준이가 있다면, 유령은 거리와 상관없이 석준이를 발견할 수 있습니다. 각 유령은 매초 시계 방향으로 90° 회전하며, 회전하는 동안에는 석준이를 볼 수 없습니다.
석준이는 매초 상하좌우로 인접한 빈칸으로 이동하거나 제자리에 머무를 수 있습니다.
아르바이트 경험이 있는 석준이는 유령의 위치와 지도를 모두 알고 있으며, 어떤 유령에게도 발견되지 않고 최대한 빨리 탈출하려고 합니다.
긴장감에 머리가 새하얘진 석준이를 위해, 그 방법을 찾아주세요.
입력
첫째 줄에 유령의 집의 크기 , 이 주어집니다. ()
둘째 줄에 입구의 좌표 와 출구의 좌표 가 주어집니다. (, )
좌표 는 위에서 번째, 왼쪽에서 번째 칸을 뜻합니다.
입구와 출구는 빈칸이며, 두 좌표는 서로 다릅니다. 또한 시각 에 유령이 입구를 바라보고 있지 않음이 보장됩니다.
다음 개의 줄에 유령의 집의 상태가 주어집니다.
출력
유령의 집을 탈출하는 데 걸리는 최소 시간을 출력합니다.
유령에게 발견되지 않고 탈출할 방법이 없다면 GG를 출력합니다.