Glen

시간 제한1초메모리 제한256 MB

요약
N×M 격자의 목표 무늬가 주어질 때, 아래로 내려갔다 올라오며 타일을 뒤집는 정해진 지그재그 경로를 출력한다.
난이도

보통10점 중 4점

유형
시뮬레이션, 구현, 그리디, 행렬
정답자
아직 제출이 없습니다

문제

니코는 글렌의 어느 방에 갇혀 있다. 방바닥에는 타일이 NN행 MM열 직사각형으로 깔려 있다.

타일을 밟으면 그 타일의 표시가 바뀐다. 표시가 없던 타일에는 표시가 생기고, 표시가 있던 타일은 표시가 사라진다. 방을 나가려면 정해진 모양대로 표시가 남아 있어야 한다.

니코가 움직이기 전에 타일의 표시는 모두 지워진다. 니코는 왼쪽 위 타일에서 왼쪽으로 한 칸 떨어진 칸에서 출발한다. 이 칸은 직사각형 바깥이다. 한 번 움직일 때마다 위, 아래, 왼쪽, 오른쪽 중 한 방향으로 한 칸 이동한다. 직사각형 바깥으로 나가도 되고, 바깥 칸에는 타일이 없으므로 그곳을 밟아도 표시는 바뀌지 않는다.

니코는 타일 개수의 세 배, 즉 3NM3NM번까지 움직일 수 있다.

니코가 어떻게 움직여야 하는지 알려주자.

입력

첫째 줄에 양의 정수 NN과 MM이 주어진다 (1≤N≤1001 \le N \le 100, 1≤M≤1001 \le M \le 100). NN은 행의 개수, MM은 열의 개수다.

다음 NN개 줄에는 각 행의 타일이 한 줄씩 주어진다. #은 그 타일에 표시가 남아 있어야 한다는 뜻이고, .은 표시가 없어야 한다는 뜻이다. 표시가 있어야 하는 타일은 적어도 하나 있다.

출력

니코가 움직이는 순서를 공백 없이 한 줄로 출력한다. 위는 U, 아래는 D, 왼쪽은 L, 오른쪽은 R이다.

같은 모양을 만드는 이동은 여러 가지이므로, 다음 규칙으로 정해지는 이동만 정답으로 인정한다.

  • 행은 맨 위부터 맨 아래까지 차례로 처리한다. 첫 번째 행은 왼쪽에서 오른쪽으로, 두 번째 행은 오른쪽에서 왼쪽으로 지나가고, 방향은 행마다 번갈아 바뀐다.
  • 출발 칸에서 R로 한 번 움직여 왼쪽 위 타일로 들어간다.
  • 한 행 안에서는 그 행의 방향을 따라 타일을 하나씩 밟는다. 타일 하나마다 이동 한 번이다.
  • 타일을 밟은 직후, 그 타일의 현재 표시가 마지막에 남아야 하는 표시와 다르면 D로 한 칸 내려갔다가 U로 한 칸 올라온다. 같으면 내려가지 않는다. 내려갔다 올라오면 그 타일을 다시 밟게 되어 표시가 맞춰지고, 내려가면서 밟은 아래 칸의 표시도 한 번 바뀐다. 아래 칸은 나중에 그 행을 지나갈 때 같은 규칙으로 처리한다.
  • 한 행의 마지막 타일까지 처리한 뒤에는 D로 한 칸 내려가 바로 아래 타일로 들어간다. 그 타일이 다음 행에서 처음 밟는 타일이다. 맨 아래 행의 마지막 타일까지 처리하면 멈춘다.

이 규칙으로 만든 이동은 항상 존재하고 3NM3NM번을 넘지 않는다. 답이 없는 경우는 없다.

예제3

  1. 예제 1

    입력
    1 1
    #
    
    예상 출력
    R
    
  2. 예제 2

    입력
    1 5
    #.#.#
    
    예상 출력
    RRDURRDUR
    
  3. 예제 3

    입력
    3 3
    ###
    #.#
    ###
    
    예상 출력
    RRRDLDULDRDUR