문제
명령에 따라서 움직이게끔 만들어진 로봇이 있다. 가능한 명령은 다음과 같다.
N : 위로 한 칸 이동 S : 아래로 한 칸 이동 E : 오른쪽으로 한 칸 이동 W : 왼쪽으로 한 칸 이동 로봇이 움직이는 예를 한번 들어보자. 위 그림의 왼쪽 지도의 예처럼 로봇은 맨 위쪽의 어느 한 군데 있다.
남쪽으로 움직인다. 그 다음 주어진 명령에 따라서 움직이다 10번째 명령을 받았을 때, 지도 밖으로 나가게 된다.
오른쪽의 그림의 경우 3번의 명령 후에 8번 명령을 따른 다음 3번째 명령을 받은 자리로 다시 돌아오게 되고,
더 이상 나가지를 못한다.
지도의 정보와 로봇의 처음 위치를 입력 받았을 때, 이것이 얼마 만에 지도를 빠져나가는지,
아니면 지도에서 빠져나갈 수 없는지 알아보는 프로그램을 작성하라.
입력
첫 번째 줄에는 지도의 높이와 너비(1≤H, W≤10)와 처음에 로봇이 서있는 위치가 입력된다. 두 번째 줄부터 H개 줄에 W개의 문자가 입력되는데, 이는 해당 지도상에서 로봇이 수행해야 할 명령을 뜻한다.
출력
지도에서 빠져 나올 수 있는 경우 다음과 같이 출력한다. A step(s) to exit 여기서 A는 빠져나가기 위해 거쳐 가야 할 명령의 수를 의미한다.
지도에서 빠져 나올 수 없는 경우엔 다음과 같이 출력한다. A step(s) before a loop of B step(s) 여기에서의 A는 loop가 시작되기 전까지 수행한 명령의 수, B는 loop가 시작되는 시작점에 돌아오기까지 걸린 명령의 수를 말한다.
예제 #1
3 6 5
NEESWE
WWWESS
SNWWWW
10 step(s) to exit
예제 #2
4 5 1
SESWE
EESNW
NWEEN
EWSEN
3 step(s) before a loop of 8 step(s)
출처
Mid-Central USA 1999