Statement
왓슨은 크기의 격자판 위에서 움직이는 로봇을 만들었다. 홈즈와 왓슨은 격자판에 거울과 벽을 배치하여 로봇이 도착점에 도달하는 시간을 최대한 늘리는 내기를 한다.
로봇은 출발점에서 정해진 방향을 바라보며 시작한다. 매번 바라보는 방향으로 한 칸 전진을 시도하고, 전진하려는 칸에 따라 다음과 같이 행동한다.
- 빈칸이면 그 칸으로 이동한다. 출발점과 도착점도 빈칸으로 취급한다.
- 거울이면 이동하기 전 거울의 모양으로 반사 방향을 계산한다. 거울 칸으로 이동한 뒤 거울의 모양을 반전시키고, 계산한 방향을 바라본다.
- 벽이면 이동하지 않고 제자리에서 방향을 도 바꾼다.
- 격자판 밖이면 격자판을 벗어나며, 이후 도착점에 도달할 수 없다.
거울의 모양은 /와 \ 중 하나이며, 반전할 때 서로 바뀐다. 반사 방향은 다음과 같다.
거울 | 오른쪽으로 전진 | 아래쪽으로 전진 | 왼쪽으로 전진 | 위쪽으로 전진 |
|---|---|---|---|---|
| 위 | 왼쪽 | 아래 | 오른쪽 |
| 아래 | 오른쪽 | 위 | 왼쪽 |
위 표의 방향은 거울에 들어가기 직전에 로봇이 바라보는 방향이다. 거울은 로봇이 그 칸에 들어갈 때에만 반전된다. 거울 위에서 벽에 막혀 방향을 바꿀 때에는 거울이 반전되지 않는다.
한 칸 이동할 때마다 초가 걸리며, 방향을 바꾸는 데에는 시간이 걸리지 않는다. 도착점에 도달하면 즉시 멈춘다.
홈즈는 초가 걸리는 격자판을 만들었다. 왓슨을 도와 홈즈를 이기는 격자판을 만들어라. 기준에 못 미치는 유효한 격자판도 부분 점수를 받을 수 있다.
Input
입력은 다음과 같이 정수 하나로 주어진다.
이 값은 격자판의 조건에 영향을 주지 않으므로 읽지 않아도 된다. 격자판을 출력하는 프로그램을 제출한다.
Output
개의 줄에 걸쳐 각 줄에 개의 문자를 공백 없이 출력한다. 각 문자의 의미는 다음과 같다.
U,D,L,R: 출발점. 각각 위, 아래, 왼쪽, 오른쪽을 바라보며 시작한다.F: 도착점..: 빈칸.#: 벽./,\: 거울.
출발점을 나타내는 문자는 전체 격자판에 정확히 하나 있어야 하며, 도착점도 정확히 하나 있어야 한다. 가능한 답이 여러 가지라면 아무거나 출력해도 된다.
채점
로봇이 격자판 밖으로 나가지 않고 번 이하의 이동으로 도착점에 도달해야 유효한 격자판이다. 형식이 올바르지 않거나, 무한 루프에 빠지거나, 이 이동 상한까지 도착하지 못하면 점이다. 벽에 막힌 제자리 회전은 이동 횟수에 포함하지 않는다.
유효한 격자판에서 도착까지의 이동 횟수를 라 할 때 점수는 다음과 같다.
이면 점을 받으며, 문제를 맞은 것으로 처리된다. 번 이동했다는 사실만으로 점수를 주지 않으며, 반드시 도착점에 도달해야 한다.
Constraints
- 입력으로 주어지는 정수는 항상 이다.
- 격자판의 크기는 이다.
- 각 칸의 문자는
U,D,L,R,F,.,#,/,\중 하나이다. - 출발점과 도착점은 각각 정확히 하나이다.
- 유효한 격자판의 도착까지의 이동 횟수는 이다.
Subtasks
Samples
로봇은 오른쪽으로 두 칸 이동하여 거울에 들어간다. 반사 후 아래를 바라보지만, 아래가 벽이므로 제자리에서 위를 바라본다. 위로 한 칸 이동하면 도착점에 도달한다. 총 초가 걸리며, 점수는 점이다. 이 예제는 유효하지만 점짜리 답은 아니다.