E D R , A S I H C RSS

Monocycle

원문보기
----
인기도:C(A,B,C), 성공률:보통(낮음,보통,높음), 레벨:3(1~4)

About Monocycle

외발자전거는 한 바퀴로 가는 자전거를 말한다. 다음 그림에 나와있는 것처럼 다섯 개의 서로 다른 색 칠해져 있는 특별한 바퀴가 달려있는 외발자전거를 생각해보자.
http://online-judge.uva.es/p/v100/p10047a.gif
칠해진 부분은 전부 똑같은 각도(72')만큼 벌어져 있다. 어떤 사람 정사각형 타일로 만들어진 M × N 격자 위에서 외발자전거를 탄다. 한 타일의 중심에서 바로 옆 타일의 중심으로 외발자전거를 타고 동하면 바퀴가 정확하게 72' 회전하게 되어있다. 위 그림을 보면 어떤 식인지 알 수 있을 것다. 바퀴가 1번 타일의 중심에 있을 때, 파란색 칠해진 부분의 중점 바닥에 닿아있다. 바퀴가 다음 타일(2번 타일)중심으로 동하면 흰색으로 칠해진 부분의 중점 바닥에 닿게 된다.
http://online-judge.uva.es/p/v100/p10047b.gif
격자에 있는 정사각형 중 몇 개는 자전거가 갈 수 없게 막혀있다. 그 자전거를 탄 사람은 한 위치에서 시작해서 어떤 다른 위치로 최단 시간 안에 도착하려고 한다. 한 정사각형 위에서 그 자전거는 다음 정사각형으로 동하거나, 같은 정사각형 내에서 왼쪽나 오른쪽으로 90' 회전할 수 있다. 런 동작을 하는 데 각각 1초가 걸린다. 자전거는 반드시 북쪽을 향하고, 바퀴에서 녹색 부분의 중점 지면과 접하고 있는 상태에서 출발한다. 도착 지점에서는 자전거의 방향은 상관없지만 지면과 접하고 있는 부분은 녹색어야 한다.
자전거를 타는 사람 목적지에 도착할 수 있는지를 알아내고, 도착할 수 있다면 시간 얼마나 걸리는지 계산해보자.

Input

여러 개의 테스트 케스가 입력될 수 있다.
각 테스트 케스의 첫째 줄에는 그리드의 크기를 나타내는 두 개의 정수 M과 N(1≤M, N≤25) 입력된다. 그 밑으로는 M줄에 걸쳐서 각각 N개의 글자로 그리드 구성을 기술하는 내용 입력된다. '#' 문자는 자전거가 갈 수 없는 정사각형을 나타내며, 다른 모든 정사각형에는 자전거가 갈 수 있다. 자전거의 출발지점은 'S'로, 도착지점은 'T'로 표시된다.
M과 N 모두 0으로 입력되면 입력 종료된다.

Output

각 테스트 케스에 대해 먼저 아래 출력 예에 나와있는 식으로 테스트 케스 번호를 출력한다. 자전거가 도착지점에 갈 수 있으면 아래에 나와있는 형식에 맞게 초 단위로 그 지점에 가는 데 걸리는 최소 시간을 출력한다. 그렇지 않으면 "destination not reachable"라고 출력한다.
서로 다른 테스트 케스 사에는 빈 줄을 하나씩 출력한다.

Sample Input

{{| 1 3
S#T
10 10
#S.......#
#..#.##.##
#.##.##.##
.#....##.#
#..#.##...
#......##.
..##.##...
#.###...#.
#.....###T
0 0 |}}

Sample Output

{{| Case #1
destination not reachable

Case #2
minimum time = 49 sec |}}

작성자 사용언어 개발시간 코드
조현태 C++ ? Monocycle/조현태
김상섭 ]] C++ 무한루프..ㅡㅜ Monocycle/김상섭
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:48
Processing time 0.0156 sec