아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

화성의 구덩이

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

요약
구덩이가 있는 격자에서 속도 0부터 5까지 움직이는 로버를 명령해 목적지에 멈춘 상태로 도달하는 최소 시간을 구한다.
난이도

보통10점 중 7점

유형
BFS, 그래프, 시뮬레이션, 최단 경로
정답자
아직 제출이 없습니다

문제

로버가 화성 표면을 나타내는 격자 지도 위에서 출발 칸부터 목적지까지 이동해야 한다. 최근 장난꾸러기들이 표면 곳곳에 구덩이를 여러 개 파 놓았고, 로버는 어떤 구덩이에도 빠지면 안 된다. 그래서 목적지에 도달하려면 크게 우회해야 할 수도 있고, 아예 불가능할 수도 있다.

로버는 1초에 명령 하나씩으로 조종한다. 로버는 바라보는 방향과, 초당 칸 수로 나타내는 전진 속도를 가진다. 처음에는 정지해 있고(속도 0) 위쪽을 바라본다. 매 초마다 다음 명령 중 정확히 하나를 내린다.

  • 전진(Forward) — 로버가 정지해 있을 때만: 속도 1로 앞으로 굴러가기 시작한다.
  • 후진(Backward) — 로버가 정지해 있을 때만: 속도 1로 뒤로 굴러가기 시작한다.
  • 가속(Faster) — 로버가 앞으로 움직이는 중일 때만: 전진 속도를 1 늘린다. 최대 5까지 가능하다.
  • 감속(Slower) — 로버가 앞으로 움직이는 중일 때만: 전진 속도를 1 줄인다. 0까지 줄일 수 있다.
  • 정지(Stop) — 로버의 속도가 즉시 0이 된다.
  • 좌회전(Left) / 우회전(Right) — 로버가 정지해 있을 때만: 제자리에서 왼쪽 또는 오른쪽으로 90° 돈다.
  • 대기(Wait) — 아무것도 바뀌지 않는다.

전제 조건을 만족하지 못하는 명령(예: 이미 움직이는 중에 내린 전진)은 아무 효과가 없다. 명령을 적용한 뒤, 로버는 그 1초 동안 현재 속도로 나아가 바라보는 방향(후진 중이면 그 반대 방향)으로 속도만큼의 칸을 이동한다. 로버가 지나가는 모든 칸은 물론 그 초가 끝날 때 멈추는 칸까지 전부 빈 칸이어야 하고 지도 안에 있어야 한다. 로버가 구덩이를 가로지르거나 지도 밖으로 나가게 되는 명령은 내릴 수 없다.

지도는 다음 문자로 표현한다. .은 빈 칸, P는 구덩이, R은 로버의 출발 칸, D는 목적지다. R과 D는 각각 정확히 한 번씩 나타난다. 로버는 항상 위쪽을 바라보며 출발한다. 목적지에서 바라보는 방향은 상관없지만, 그곳에서 반드시 정지해 있어야 한다. 로버가 목적지에 도착해 멈추는 데 걸리는 최소 시간(초)을 구하거나, 불가능함을 알려라.

입력

첫 줄에 데이터 집합의 개수 KK가 주어진다. 이어서 각 데이터 집합이 다음 형식으로 주어진다.

첫 줄에 두 정수 hh와 ww가 주어진다(1≤h,w≤501 \le h, w \le 50). 각각 지도의 높이와 너비다.

다음 hh개의 줄에는 각각 ww개의 문자가 주어지며, 위에서 설명한 문자로 지도의 한 행을 나타낸다.

출력

각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. 여기서 x는 데이터 집합의 번호다(1부터 시작). 그다음 줄에는 로버가 목적지에 도착해 멈추는 데 걸리는 최소 시간(초)을 출력한다. 목적지에 도달할 수 없으면 대신 Impossible을 출력한다.

연속한 두 데이터 집합 사이에는 빈 줄을 하나 출력한다.

예제2

  1. 예제 1

    입력
    1
    10 20
    ...................D
    .P......P.P.........
    .P...PPPP.P.........
    .P...P....P.........
    .P...P.PPPP.........
    .P.PPP.P............
    .P.P...P............
    .PPP.PPPPPPPPPPPPPPP
    ....R...............
    PPPPPPPPPPPPPPPPPPPP
    
    예상 출력
    Data Set 1:
    19
    
  2. 예제 2

    입력
    1
    2 1
    D
    R
    
    예상 출력
    Data Set 1:
    2