주차장 |
---|
<그림 1>과 같이 정사각형 \(N \times N\) 크기의 주차장이 있다. 이 주차장에는 차들이 많이 있는데, 우리 차를 주차장 밖으로 빼내어야 한다. 그런데 차를 움직일 수 있는 주차 관리원은 한 명 뿐이다. 이 주차 관리원이 하나의 차를 타고 그 차를 움직이는 것을 하나의 '작업'이라 부르기로 한다. 하나의 작업에 차는 앞뒤로 다른 차와 겹치지 않는 한 얼마든지 움직일 수 있다. 다음의 가정 하에 작업의 횟수를 가장 적게하면서 우리 차를 주차장 밖으로 빼내기 위해서 움직어야 하는 모든 차들의 순서를 계산하는 프로그램을 작성하시오. <가정>
<평가 방법>
|
입력 | |
---|---|
첫째 줄에는 주차장의 크기를 나타내는 정수 \(N (3 \leq N \leq 15)\), 다음 \(N\)개의 줄에는 각각 \(N\)개의 숫자가 한 칸씩 띄어서 나타나는데 0은 빈 공간을 뜻하고 1은 우리 차를 뜻하며, 나머지 차에는 2부터 연속된 정수가 각각 부여된다. |
출력 | |
---|---|
첫째 줄에는 총 작업의 횟수를 나타내는 정수 K를 출력한다. 다음 K줄은 진행된 작업을 순서대로 출력한다. 한 줄이 한 작업을 나타내며 두 개의 정수로 이루어진다. 첫째 정수는 움직인 차의 번호, 둘째 정수는 차가 움직인 거리를 나타낸다. 수평차인 경우 오른쪽 방향으로 움직인 거리를 양의 정수, 왼쪽 방향으로 움직인 거리를 음의 정수로 나타낸다. 수직차이면 위쪽 방향으로 움직인 거리를 양의 정수, 아래쪽 방향으로 움직인 거리를 음의 정수로 나타낸다. 만약 차가 주차장을 빠져나갈 수 없으면 첫 줄에 0을 출력한다. |
예시 | |||
---|---|---|---|
1 | 입력 | 6 2 0 0 6 6 6 2 0 0 8 0 9 1 1 0 8 4 9 3 3 3 0 4 9 0 0 10 0 7 7 11 11 10 5 5 0 | |
출력 | 8 1 -1 2 -1 6 -3 8 1 4 2 7 -1 9 -2 1 5 |
출처 | |
---|---|
2000년 한국정보올림피아드 전국 본선 고등부 3번 문제 |