로봇

면접 대비

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

요약
직사각형 격자 트랙 위를 달리는 원형 로봇이 시작 교차점에서 지정한 방향을 보고 서서 목표 교차점까지 이동한다. GO는 1~3미터, TURN은 90도 회전이며 각 명령에 1초가 걸릴 때 최소 시간을 구하고, 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

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

문제

로봇 이동 연구소(Robot Moving Institute)는 매장에서 물건을 옮기기 위해 로봇 한 대를 사용한다. 로봇은 한 지점에서 다른 지점으로 이동할 때 걸리는 시간을 최소로 해야 한다.

로봇은 직선 궤도(트랙) 위에서만 움직인다. 모든 트랙은 직사각형 격자를 이루며, 이웃한 트랙 사이의 간격은 1미터이다. 매장은 가로 NN, 세로 MM 미터의 직사각형이고 이 격자로 완전히 덮여 있다. 매장 벽에 가장 가까운 트랙은 벽에서 정확히 1미터 떨어져 있다.

로봇은 지름이 1.6미터인 원 모양이며, 트랙이 로봇의 중심을 지난다. 로봇은 항상 북·남·동·서 중 한 방향을 바라보고, 트랙은 남북 방향과 동서 방향으로 놓여 있다. 로봇은 자신이 바라보는 방향으로만 움직일 수 있으며, 바라보는 방향은 각 트랙 교차점에서 바꿀 수 있다. 처음에 로봇은 어떤 교차점에 서 있다.

매장의 장애물은 바닥에서 1m×1m1\text{m} \times 1\text{m} 크기의 칸을 차지하며, 각 장애물은 트랙으로 둘러싸인 한 칸 안에 들어 있다.

로봇은 두 가지 명령으로 제어된다.

  • GO 명령은 정수 매개변수 n∈{1,2,3}n \in \{1, 2, 3\} 을 가진다. 이 명령을 받으면 로봇은 바라보는 방향으로 nn 미터 이동한다.
  • TURN 명령은 left 또는 right 매개변수를 가진다. 이 명령을 받으면 로봇은 지정된 방향으로 방향을 90° 회전한다.

각 명령을 실행하는 데 1초가 걸린다.

주어진 출발점에서 도착점까지 로봇이 이동하는 데 걸리는 최소 시간을 구하는 프로그램을 작성하라.

입력

입력은 여러 블록으로 이루어진다. 각 블록의 첫 줄에는 두 정수 M≤50M \le 50 과 N≤50N \le 50 이 공백 하나로 구분되어 주어진다. 이어지는 MM 개의 줄에는 각각 NN 개의 수(0 또는 1)가 공백으로 구분되어 주어진다. 1은 장애물, 0은 빈 칸을 뜻한다. (트랙은 칸과 칸 사이에 있다.)

블록의 마지막 줄에는 네 개의 양의 정수 B1B_1 B2B_2 E1E_1 E2E_2 가 각각 뒤에 공백 하나를 두고 주어진 뒤, 출발 시점의 로봇 방향을 나타내는 단어가 온다. B1,B2B_1, B_2 는 로봇이 놓인 출발 칸의 좌표로, 로봇은 그 칸의 북서쪽 모서리(교차점)에 놓인다. E1,E2E_1, E_2 는 로봇이 도착해야 하는 칸의 좌표이며, 로봇은 그 칸의 북서쪽 모서리에 도착해야 한다. 도착 시점의 방향은 정해져 있지 않다.

좌표는 (행, 열) 형식이다. 즉 가장 북서쪽 칸의 좌표는 (0, 0)이고, 가장 남동쪽 칸의 좌표는 (M−1,N−1)(M-1, N-1) 이다. 방향은 north, west, south, east 중 하나로 주어진다.

마지막 블록은 M=0M = 0, N=0N = 0 인 한 줄만으로 이루어진다.

출력

마지막 블록을 제외한 각 블록마다 한 줄씩 출력한다. 출력 줄의 순서는 입력 블록의 순서와 같다. 각 줄에는 로봇이 출발점에서 도착점까지 도달하는 데 필요한 최소 초를 출력한다. 출발점에서 도착점으로 가는 경로가 존재하지 않으면 그 줄에는 -1을 출력한다.

힌트

예제1

  1. 예제 1

    입력
    9 10
    0 0 0 0 0 0 1 0 0 0
    0 0 0 0 0 0 0 0 1 0
    0 0 0 1 0 0 0 0 0 0
    0 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 1 0 0 0
    0 0 0 0 0 1 0 0 0 0
    0 0 0 1 1 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0
    1 0 0 0 0 0 0 0 1 0
    7 2 2 7 south
    0 0
    
    예상 출력
    12