보이지 않는 미로 탈출
시간 제한2초메모리 제한256 MB
모든 빈칸에서 시작해도 10번 이내 틸트로 구슬을 출구로 빼내는 가장 짧은 순서를 구하고 동점이면 사전 순으로 앞선 것을 출력합니다.
문제
XH는 미로 탈출 장난감을 만드는 회사다. 이 장난감의 보드는 세로 , 가로 크기의 격자이고, 위가 투명한 아크릴판으로 덮여 있어서 안에 든 구슬을 손으로 꺼낼 수 없다. 보드의 가장 바깥 행과 열은 모두 막혀 있고, 가장자리 한 곳에만 구멍이 뚫려 있다. 이 구멍이 출구다.
플레이어는 보드를 왼쪽, 오른쪽, 위쪽, 아래쪽 중 한 방향으로 기울일 수 있다. 보드를 기울이면 구슬은 그 방향으로 굴러가다가 벽이나 장애물에 막히는 칸에서 멈춘다. 굴러가는 도중에 출구를 지나면 구슬은 보드 밖으로 빠져나가고, 그 뒤에는 보드를 어떻게 기울여도 아무 일도 일어나지 않는다.
공장은 같은 모양의 보드만 찍어내지만, 배송 중에 보드가 흔들리기 때문에 포장을 뜯기 전에는 구슬이 어느 빈 칸에 있는지 알 수 없다. 구슬은 빈 칸 어디에나 있을 수 있다. 포장을 뜯지 않고, 즉 구슬의 위치를 보지 않고 구슬을 빼내는 기울이기 순서를 찾아라. 순서 하나가 구슬이 놓일 수 있는 모든 빈 칸에서 통해야 한다.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다.
각 테스트 케이스의 첫째 줄에 보드의 세로 크기 과 가로 크기 이 주어진다. ()
다음 개 줄에는 보드의 모양을 나타내는 길이 의 문자열이 주어진다. 문자열은 '.', '#', 'O'로만 이루어져 있다. '.'은 빈 칸, '#'은 구슬이 지나갈 수 없는 벽이나 장애물, 'O'는 가장자리에 뚫린 출구를 뜻한다.
모든 보드의 가장자리에는 출구를 제외하고 '#'만 있다. 빈 칸은 한 개 이상이다. 모든 빈 칸에서 변을 공유하는 빈 칸만 밟고 출구까지 가는 길이 있다.
출력
각 테스트 케이스마다 한 줄을 출력한다.
구슬이 어느 빈 칸에서 시작하든 10번 이내에 항상 빼낼 수 있으면, 그런 기울이기 순서 중 가장 짧은 것을 'L', 'R', 'U', 'D'로 이루어진 문자열로 출력한다. 네 문자는 차례로 왼쪽, 오른쪽, 위쪽, 아래쪽으로 기울이기를 뜻한다.
가장 짧은 순서가 여러 개면 그중 사전순으로 가장 앞서는 것을 출력한다. 사전순은 문자 순서 D < L < R < U를 따른다.
10번 이내에 구슬을 빼낼 수 없으면 XHAE를 출력한다.