Page not loading? Try clicking here.
Placeholder

#1238

미로탈출 로봇중간 단계 1s 128MB

Problems

지헌이는 미로를 탈출하는 로봇을 만들고 있다. 

그런데 벽이나 장애물을 만났을 때만 주어진 방향 순서대로 바꾸어 갈 수 있는지를 테스트 하려고 한다.

 

<처리조건> 1. 출발은 항상 왼쪽 위에서 시작한다. 2. 벽이나 장애물을 만났을 때만 방향을 바꿀 수 있다. (벽은 맵의 바깥을 말한다.) 3. 방향을 바꿀때는 주어진 순서대로 바꾼다. 4. 한번 지나간 길은 다시 지나갈 수 없다. ( 다음 이동할 위치가 한번 지나간 길이라면 로봇은 멈춘다.) 5. 맵의 1칸 이동을 이동거리 1로 한다.

 

5x5맵의 정보가 주어지고 방향의 순서가 아래, 오른쪽, 위. 왼쪽 일 때 다음과 같이 움직인다.

1. 아래(1)방향으로 움직이다 장애물을 만난다. => 방향을 오른쪽(4)으로 바꾼다.

2. 진행방향으로 움직이다 벽을 만난다. => 방향을 위쪽(3)으로 바꾼다.

3. 진행방향으로 움직이다 벽을 만난다. => 방향을 왼쪽(2)로 바꾼다.

4. 진행방향으로 움직이다 벽을 만난다. => 방향을 아래쪽(1)로 바꾼다.

5. 진행방향으로 움직이다 지나간 길을 만난다.​ => 멈춘다.

미로의 맵과 방향의 순서가 주어질 때 최대로 이동할 수 있는 이동 거리를 구하는 프로그램을 작성하시오.


Input

첫 줄에 맵의 가로, 세로 크기인 N(3≤N≤10)이 들어온다. 그 다음 줄부터 N개의 줄에 각각 N개씩 0과 1이 공백 없이 들어온다. (0: 길, 1: 장애물) 마지막 줄에 방향을 바꾸는 명령 4개가 들어온다. 방향은 1:아래, 2:왼쪽, 3:위, 4:오른쪽 이다. 로봇은 벽이나 장애물을 만나면 주어진 순서에 따라 방향을 바꾸며 갈 수 있는 곳을 찾아 진행한다.


Output

출발위치에서 출발하여 방향 순서대로 이동할 경우 갈수 있는 한 최대로 이동하였을 때 이동한 거리를 출력한다.


Example

5

00001
01000
00000
00000
10000
1 4 3 2
12

Source

pai2
You must sign in to write code.