로드러너 1 경비로봇 인공지능 제작

NYPC 2017 · 예선 스테이지 1

로드러너 1은 고전게임 로드러너를 넥슨에서 리메이크한 게임이다. 플레이어는 러너를 조종해서 경비로봇들을 따돌리고 맵에 뿌려진 골드를 모두 획득해 탈출하려 한다.

러너에게 가장 빨리 갈 수 있는 경로로 움직이는 경비로봇 AI를 만들어보자. 현재 게임 맵의 상태와 러너의 위치, 경비로봇의 위치가 주어졌을 때 경비로봇이 어떤 순서로 행동을 취해야 러너에게 가장 빨리 갈 수 있는지 결정하면 된다. 주어진 경비로봇의 처음 위치는 항상 블록을 밟고 서 있고, 러너는 움직이지 않는다고 가정한다.

경비로봇의 이동 규칙은 다음과 같다.

사다리는 밟고 올라설 수 있다
사다리는 밟고 올라설 수 있다
사다리의 중간에서 옆으로 이동해서 낙하해도 된다
사다리의 중간에서 옆으로 이동해서 낙하해도 된다

입력 형식

첫 줄에는 맵의 가로 크기 NN과 세로 크기 MM이 공백으로 구분되어 주어진다. NNMM30003\,000 보다 크지 않은 자연수이다. 둘째 줄에 HH, VV, FF가 공백으로 구분되어 주어진다. HH, VV, FF10910^9 보다 크지 않은 자연수이다. 이후 MM개의 줄에 맵 정보가 맨 위부터 아래로 차례로 주어진다. 맵 정보는 빈 공간은 ., 블록은 B, 사다리는 H, 러너의 위치는 R, 경비로봇의 위치는 G로 주어진다.

출력 형식

첫 줄에 경비로봇이 이동할 방향을 L(왼쪽), R(오른쪽), U(위쪽), D(아래쪽)으로 공백없이 출력한다.

낙하하는 경우도 출력해야 한다. 위 상황의 경우 출력은 R, D로 출력한다. 사다리에서 오른쪽으로 이탈하는 과정이 R, 낙하가 D이다. 만약 여러 칸을 낙하하면 낙하하는 칸수만큼 D를 출력한다.

최단 시간에 러너에게 도달 가능한 경로가 여럿이라면 그 중 아무거나 하나만 출력하면 된다. 러너에게 도달 불가능할 경우 X를 출력한다.

예제

입력

5 5 1 1 1 BBBBB B.R.B B.BHB BG.HB BBBBB

출력

RRUUL

주의 사항

실제 게임에는 블록 파기, 매달리기 등 더 많은 요소가 있지만 이 문제에서는 다루지 않는다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 90

입력되는 맵에 사다리가 주어지지 않는다.

종류 2: 60

H=V=F=1H = V = F = 1.

종류 3: 150

문제의 원래 제한조건 이외의 추가된 제한이 없음.

해설