로봇
면접 대비시간 제한1초메모리 제한128 MB
직사각형 격자 트랙 위를 달리는 원형 로봇이 시작 교차점에서 지정한 방향을 보고 서서 목표 교차점까지 이동한다. GO는 1~3미터, TURN은 90도 회전이며 각 명령에 1초가 걸릴 때 최소 시간을 구하고, 불가능하면 -1을 출력한다.
문제
로봇 이동 연구소(Robot Moving Institute)는 매장에서 물건을 옮기기 위해 로봇 한 대를 사용한다. 로봇은 한 지점에서 다른 지점으로 이동할 때 걸리는 시간을 최소로 해야 한다.
로봇은 직선 궤도(트랙) 위에서만 움직인다. 모든 트랙은 직사각형 격자를 이루며, 이웃한 트랙 사이의 간격은 1미터이다. 매장은 가로 , 세로 미터의 직사각형이고 이 격자로 완전히 덮여 있다. 매장 벽에 가장 가까운 트랙은 벽에서 정확히 1미터 떨어져 있다.
로봇은 지름이 1.6미터인 원 모양이며, 트랙이 로봇의 중심을 지난다. 로봇은 항상 북·남·동·서 중 한 방향을 바라보고, 트랙은 남북 방향과 동서 방향으로 놓여 있다. 로봇은 자신이 바라보는 방향으로만 움직일 수 있으며, 바라보는 방향은 각 트랙 교차점에서 바꿀 수 있다. 처음에 로봇은 어떤 교차점에 서 있다.
매장의 장애물은 바닥에서 크기의 칸을 차지하며, 각 장애물은 트랙으로 둘러싸인 한 칸 안에 들어 있다.
로봇은 두 가지 명령으로 제어된다.
GO명령은 정수 매개변수 을 가진다. 이 명령을 받으면 로봇은 바라보는 방향으로 미터 이동한다.TURN명령은left또는right매개변수를 가진다. 이 명령을 받으면 로봇은 지정된 방향으로 방향을 90° 회전한다.
각 명령을 실행하는 데 1초가 걸린다.
주어진 출발점에서 도착점까지 로봇이 이동하는 데 걸리는 최소 시간을 구하는 프로그램을 작성하라.
입력
입력은 여러 블록으로 이루어진다. 각 블록의 첫 줄에는 두 정수 과 이 공백 하나로 구분되어 주어진다. 이어지는 개의 줄에는 각각 개의 수(0 또는 1)가 공백으로 구분되어 주어진다. 1은 장애물, 0은 빈 칸을 뜻한다. (트랙은 칸과 칸 사이에 있다.)
블록의 마지막 줄에는 네 개의 양의 정수 가 각각 뒤에 공백 하나를 두고 주어진 뒤, 출발 시점의 로봇 방향을 나타내는 단어가 온다. 는 로봇이 놓인 출발 칸의 좌표로, 로봇은 그 칸의 북서쪽 모서리(교차점)에 놓인다. 는 로봇이 도착해야 하는 칸의 좌표이며, 로봇은 그 칸의 북서쪽 모서리에 도착해야 한다. 도착 시점의 방향은 정해져 있지 않다.
좌표는 (행, 열) 형식이다. 즉 가장 북서쪽 칸의 좌표는 (0, 0)이고, 가장 남동쪽 칸의 좌표는 이다. 방향은 north, west, south, east 중 하나로 주어진다.
마지막 블록은 , 인 한 줄만으로 이루어진다.
출력
마지막 블록을 제외한 각 블록마다 한 줄씩 출력한다. 출력 줄의 순서는 입력 블록의 순서와 같다. 각 줄에는 로봇이 출발점에서 도착점까지 도달하는 데 필요한 최소 초를 출력한다. 출발점에서 도착점으로 가는 경로가 존재하지 않으면 그 줄에는 -1을 출력한다.
힌트
