[BOJ13460] 구슬 탈출 2

Updated:

직사각형 보드에 빨간, 파랑 구슬을 넣고 빨간 구슬만 구멍을 통해 빼내기

  • N*M 크기 (1*1크기의 칸)
  • 바깥 행, 열은 모두 막힘
  • 하나의 구멍
  • 빨강, 파랑 두 구슬
  • 4방향으로 굴리기(공은 동시에 움직임)
  • 10번 만에 못 끝내면 return -1
  • 최소 몇 번만에 빨간 구슬을 빼낼 수 있는가????

입력 :

  • 세로, 가로 N, M (3 ≤ N, M ≤ 10)
  • ‘.’, ‘#’, ‘O’, ‘R’, ‘B’
  • ’.’은 빈 칸을 의미하고, ‘#’은 공이 이동할 수 없는 장애물 또는 벽을 의미하며, ‘O’는 구멍의 위치를 의미한다. ‘R’은 빨간 구슬의 위치, ‘B’는 파란 구슬의 위치

설계

  • BFS
  • Depth, red point, blue point / Ball 구조체 선언
  • 방문 배열 red, blue 함께 저장
  • 보드를 기울인 후 공 위치 찾는 함수 (구멍 만났을 때 움직임 그만, 벽 만났을 때 직전의 위치로)
  • red, blue ball 위치에 따라 기울였을 때 적절한 위치 조건 구현
  • Queue<ball> 선언하여 bfs 구현
  • Bfs 탐색 시 빨간 공이 구멍에 들어갔는지 판별, 상하좌우 이동 시

How I solved(click to github)


ref :
BOJ13460

Leave a comment