배찌와 다오의 대청소 (스텝 업)

NYPC 2026 · 루키 트랙 예선 라운드

배찌는 봄을 맞아 대청소를 하려고 합니다.

배찌의 집은 세로 NN칸, 가로 MM칸으로 이루어진 격자로 나타낼 수 있습니다. 각 칸은 빈 칸, 장애물, 블럭 중 하나입니다. 배찌는 혼자서, 또는 친구 다오와 함께 물풍선으로 집에 있는 모든 블럭을 없애려고 합니다.

처음에 배찌와 다오는 각자 서로 다른 빈칸 중 하나에 서 있습니다. 배찌와 다오는 이동물폭탄 터트리기 중 하나를 골라 행동하는 것을 반복합니다. 만약 배찌와 다오가 같이 청소를 하고 있다면, 배찌부터 시작해서 번갈아가면서 행동합니다.

이동을 선택했다면, 배찌 또는 다오는 상하좌우 중 인접한 칸 하나를 골라 그 칸으로 움직일 수 있습니다.

  • 장애물 또는 블럭이 있는 칸으로 이동하거나 집 밖으로 이동하는 것은 불가능합니다.
  • 배찌 또는 다오가 서 있는 칸으로는 서로 이동할 수 있습니다.

물폭탄 터트리기를 선택했다면, 즉시 4개의 물줄기가 상하좌우 각 방향으로 나아갑니다.

  • 물줄기가 블럭에 부딫힌다면 물줄기는 블럭과 같이 사라지고, 블럭은 빈 칸이 됩니다.
  • 물줄기는 최대 KK칸 나아간 뒤 사라집니다. 즉, 물폭탄을 터트린 캐릭터와 파괴된 블럭의 거리는 KK 이하입니다.
  • 물줄기가 나아가는 도중 장애물이나 집 끝에 도달하면 물줄기는 멈춥니다.
  • 배찌와 다오의 물줄기의 세기 KK는 다를 수 있습니다.

배찌와 다오는 최소한의 움직임으로 모든 블럭을 터트리려고 합니다. 배찌와 다오의 청소를 도와줍시다!

입력 형식

첫째 줄에 정수 N,M,CN, M, C가 공백으로 구분되어 주어집니다. C=1C = 1이라면 배찌만, C=2C = 2인 경우 배찌와 다오가 같이 움직입니다.

둘째 줄에 C=1C = 1이라면 K1K_1이, C=2C = 2라면 K1,K2K_1, K_2가 공백으로 구분되어 주어집니다. K1K_1은 배찌의 물줄기 세기, K2K_2는 다오의 물줄기 세기입니다.

다음 NN개의 줄에 걸쳐 집의 상태를 나타내는 길이 MM의 문자열이 주어집니다. ii번째 문자열의 jj번째 문자는, 위에서 부터 ii번째 행, 왼쪽에서부터 jj번째 열에 해당하는 칸의 상태를 나타냅니다. 각 문자의 의미는 다음과 같습니다.

  • .: 빈 칸
  • #: 장애물
  • @: 블럭
  • B: 초기에 배찌가 있는 빈 칸
  • D: 초기에 다오가 있는 빈 칸

단, 입력에 B는 정확히 한 개, DC=2C=2인 경우에만 정확히 한 개 주어지며, 모든 블럭을 파괴할 수 있는 입력만 주어집니다.

출력 형식

배찌의 행동을 나타내는 U, D, L, R, B로 이루어진 길이 11 이상 100000100\,000 이하의 문자열을 출력합니다.

각 문자의 의미는 다음과 같습니다.

  • U: 위로 이동
  • D: 아래로 이동
  • L: 왼쪽으로 이동
  • R: 오른쪽으로 이동
  • B: 물폭탄을 터트림

C=1C = 1인 경우 배찌의 행동을 차례대로, C=2C = 2인 경우, 배찌와 다오의 행동을 번갈아가며 출력합니다.

제한

  • 1N501 \le N \le 50
  • 1M501 \le M \le 50
  • CC11 또는 22
  • 1K1,K251 \le K_1, K_2 \le 5

채점

스텝 업 문제는 전체 문제의 점수의 20% 비중을 차지합니다.

올바르지 않은 출력을 한 경우 오답이 되며 점수는 00점입니다. 올바르지 않은 출력의 예시는 다음과 같습니다.

  • 출력 형식을 맞추지 않은 경우
  • 장애물이나 블럭이 있는 칸으로 이동한 경우
  • 집 밖으로 이동한 경우

각 테스트케이스에 대한 비용 Cost\textrm{Cost}는 다음과 같이 정해집니다.

  • 모든 행동이 끝나고 파괴되지 않은 블럭의 수를 XX, 출력한 문자열의 길이를 TT라고 합시다.
    • X=0X = 0인 경우 Cost=T\textrm{Cost} = T
    • X0X \ne 0인 경우 Cost=100000+X\textrm{Cost} = 100\,000 + X
  • 비용이 낮을수록 더 좋은 결과입니다.

각 테스트케이스당 실제 점수는 배점 SS와 기준 점수 Cost\textrm{Cost}'에 대해 S×min(CostCost,1)\left\lfloor S \times \min\left(\frac{\textrm{Cost}'}{\textrm{Cost}}, 1\right) \right\rfloor로 정해집니다. 각 테스트케이스의 배점과 기준 점수는 다음과 같습니다:

번호NNMMCCCost\textrm{Cost}'SS
01333311115000050\,000
02115511445000050\,000
03555522335000050\,000
04557711995000050\,000
0566771118185000050\,000
0644551112125000050\,000
07131313131137375000050\,000
0820202020221291295000050\,000
0920202020221511515000050\,000
1016161616111271275000050\,000
1117171818228080100000100\,000
1213131313223737100000100\,000
1315151515223535100000100\,000
142020202022238238100000100\,000
1520202020227272100000100\,000

스텝 업 문제에서의 최종 점수는 모든 테스트케이스의 점수의 합입니다.

시뮬레이터

문제 풀이를 돕기 위해, 시뮬레이터가 제공됩니다. 바로가기

우하단에서 미션을 선택하면 자동으로 시뮬레이터가 미션에 해당하는 입력을 보여줍니다.

시뮬레이터에서 문제를 해결했다면, "출력" 탭에서 본인의 답안을 텍스트 형태로 확인할 수 있습니다.

원한다면 출력된 본인의 답안을 그대로 제출할 수 있습니다. 문제를 푸는 데 시뮬레이터를 필수적으로 사용해야 하는 것은 아닙니다.

아래 버튼을 누르면 각 번호에 해당하는 입력이 열립니다.

미션 1미션 2미션 3미션 4미션 5미션 6미션 7미션 8미션 9미션 10미션 11미션 12미션 13미션 14미션 15