만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

구슬 탈출 2

면접 대비

시간 제한2초메모리 제한512 MB

요약
빨간 구슬만 구멍으로 빠져나가도록 보드를 기울이는 최소 횟수를 구한다.
난이도

보통10점 중 6점

유형
BFS, 시뮬레이션, 그래프
정답자
아직 제출이 없습니다

문제

구슬 탈출은 직사각형 보드에 빨간 구슬과 파란 구슬을 하나씩 넣고, 빨간 구슬을 구멍으로 빼내는 게임이다.

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

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

한 번 기울이면 두 구슬이 동시에 움직이고, 더 이상 움직이지 않을 때까지 굴러간다. 빨간 구슬이 구멍에 빠지면 성공이고, 파란 구슬이 구멍에 빠지면 실패다. 두 구슬이 같은 동작에서 함께 구멍에 빠져도 실패다. 두 구슬이 같은 칸에 동시에 있는 일은 없다.

보드의 상태가 주어졌을 때, 최소 몇 번 기울여서 빨간 구슬을 구멍으로 빼낼 수 있는지 구하는 프로그램을 작성하시오.

입력

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

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

출력

빨간 구슬을 구멍으로 빼내는 데 필요한 최소 기울이기 횟수를 출력한다. 10번 이하로 기울여서 빼낼 수 없으면 -1을 출력한다.

예제7

  1. 예제 1

    입력
    5 5
    #####
    #..B#
    #.#.#
    #RO.#
    #####
    
    예상 출력
    1
    
  2. 예제 2

    입력
    7 7
    #######
    #...RB#
    #.#####
    #.....#
    #####.#
    #O....#
    #######
    
    예상 출력
    5
    
  3. 예제 3

    입력
    7 7
    #######
    #..R#B#
    #.#####
    #.....#
    #####.#
    #O....#
    #######
    
    예상 출력
    5
    
  4. 예제 4

    입력
    10 10
    ##########
    #R#...##B#
    #...#.##.#
    #####.##.#
    #......#.#
    #.######.#
    #.#....#.#
    #.#.#.#..#
    #...#.O#.#
    ##########
    
    예상 출력
    -1
    
  5. 예제 5

    입력
    3 7
    #######
    #R.O.B#
    #######
    
    예상 출력
    1
    
  6. 예제 6

    입력
    10 10
    ##########
    #R#...##B#
    #...#.##.#
    #####.##.#
    #......#.#
    #.######.#
    #.#....#.#
    #.#.##...#
    #O..#....#
    ##########
    
    예상 출력
    7
    
  7. 예제 7

    입력
    3 10
    ##########
    #.O....RB#
    ##########
    
    예상 출력
    -1