[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