구슬 탈출

보드에 빨간 구슬, 파란 구슬, 구멍이 하나씩 있고 보드를 기울이면 두 구슬이 동시에 굴러가며, 파란 구슬이 빠지지 않으면서 빨간 구슬을 10번 이하의 기울임으로 구멍에 넣을 수 있는지 판정하는 문제다.

보통7BFS시뮬레이션구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

직사각형 보드에 빨간 구슬과 파란 구슬을 하나씩 넣고, 빨간 구슬만 구멍으로 빼내는 퍼즐이 있다.

보드의 세로 크기는 NN, 가로 크기는 MM이고 1×11 \times 1 크기의 칸으로 나뉘어 있다. 가장 바깥 행과 열은 모두 막혀 있으며, 보드에는 구멍이 하나 있다. 두 구슬은 각각 1×11 \times 1 칸을 가득 채우는 크기이고 하나씩 놓여 있다. 목표는 빨간 구슬을 구멍으로 빼내는 것이다. 이때 파란 구슬은 구멍에 들어가면 안 된다.

구슬을 손으로 건드릴 수는 없고, 보드를 기울여 중력으로 굴려야 한다. 왼쪽으로 기울이기, 오른쪽으로 기울이기, 위쪽으로 기울이기, 아래쪽으로 기울이기의 네 가지 동작이 가능하다.

한 번 기울이면 두 구슬이 동시에 움직인다. 한 번의 기울이기는 구슬이 더 이상 움직이지 않을 때까지 이어진다. 빨간 구슬이 구멍에 빠지면 성공이고, 파란 구슬이 구멍에 빠지면 실패다. 두 구슬이 한 번의 기울이기로 함께 구멍에 빠져도 실패다.

두 구슬은 같은 칸에 함께 있을 수 없고, 각각 한 칸을 모두 차지한다. 한 방향으로 기울였을 때 두 구슬이 같은 칸에서 멈추게 되면, 그 기울이기에서 더 많이 움직인 구슬이 한 칸 뒤로 물러나 앞의 구슬 바로 뒤에 멈춘다.

보드의 상태가 주어졌을 때, 10번 이하로 기울여 빨간 구슬을 빼낼 수 있는지 판정하는 프로그램을 작성하시오.

입력

첫째 줄에 보드의 세로 크기와 가로 크기를 뜻하는 두 정수 NN, MM (3N,M103 \le N, M \le 10)이 주어진다. 다음 NN개 줄에는 보드의 모양을 나타내는 길이 MM의 문자열이 주어진다. 이 문자열은 ., #, O, R, B로 이루어진다. .은 빈 칸, #은 구슬이 지나갈 수 없는 장애물이나 벽, O는 구멍의 위치, R은 빨간 구슬의 위치, B는 파란 구슬의 위치다.

주어지는 보드의 가장자리는 모두 #이다. 구멍은 한 개이고, 빨간 구슬과 파란 구슬도 각각 한 개씩 주어진다.

출력

파란 구슬을 구멍에 넣지 않으면서 10번 이하로 기울여 빨간 구슬을 빼낼 수 있으면 1, 그렇지 않으면 0을 출력한다.