티스토리 뷰

BOJ

[백준 13460] 구슬탈출 2

wo_ody 2020. 4. 13. 16:51

안녕하세요 !!! 우디😎입니다.

오늘은 BFS로 푼 구슬 탈출 2 문제에 대해 설명해드릴께요.

 

문제

[백준 13460] 구슬탈출 2 바로가기

 

문제 설명

< 이 문제의 KEY POINT >

  • 최소 몇 번 만에 빨간 구슬을 구멍을 통해 빼낼 수 있는지 출력한다. 만약, 10번 이하로 움직여서 빨간 구슬을 구멍을 통해 빼낼 수 없으면 -1을 출력한다. ==> 10번 동안의 BFS
  • 파란 구슬이 구멍에 들어가면 실패 , 기울이는 동작은 구슬의 움직임이 없을 때까지 기울임. (백준 예제 7번) ==> (빨간 구슬과 파란 구슬이 동시에 들어갈 수 있음)

 

😘 : 위의 KEY POINT 대로 차근차근 설명해드리겠습니다.

 


. 10번 동안의 BFS


빨간 구슬이 구멍을 찾아가기 위해서 상,하,좌,우 중 10개의 방향을 조합해서 찾을 수가 있습니다.

또한, 최적화 하여 한방에 ! 빨간 구슬이 구멍을 찾아갈 수 있을 까요 ??? 불가능 합니다.

따라서, 이 문제는 완전 탐색이 되겠습니다 !

구현 방법으로는 BFS가 적합한데 이유는 트리를 통해 설명해 드리겠습니다.


🌳
트리

위의 그림처럼 처음 시작을 상 하 좌 우 로 한 트리가 4가지가 나올 수 있습니다.

맨 왼쪽 상 방향을 시작으로 한 트리를 보자면 구슬이 상으로 움직인 다음 좌, 우로 움직인다고 되어있습니다.

여기서, 상으로 움직인 다음 상,하,좌,우로 움직일 수도 있지 않느냐 하실 수 있는데, 문제에서의 답은 구슬은 최소로 움직여야 합니다.

 

🎨따라서, 상으로 움직였는데 다시 상으로 움직일 필요는 없겠죠 ~

🎨또한, 하로 다시 움직여 버린다면 구슬이 제자리 걸음만 되는 격이니, 필요가 없습니다 ~

 

이처럼, 상으로 움직인 것을 좌, 우로 움직일 수 있고, 좌로 움직인 것은 다시 상,하 우로 움직인 것은 다시 상,하로 움직이는 등 트리에서 넓게 넓게 가로로 가로로(?) 탐색해주죠 ??

그래서, BFS로 풀면 됩니다 !!!

 

➋. 구슬의 이동

구슬의 이동

  1. 구슬 2개가 나란히 있을때, 먼저 이동시켜줘야 하는 구슬 생각하기
  2. 빨간 구슬이 구멍에 빠지고 안빠지는 동시에 파란 구슬이 빠지고 안빠지는 경우 (총 4가지)

 휴도 코드

 

구현

 

 

 

 

 

 

'BOJ' 카테고리의 다른 글

[백준 14809] 경사로  (1) 2020.04.20
[백준 14502] 연구소  (0) 2020.04.15
[백준 14500] 테트로미노  (0) 2020.03.29
[백준 14501] 퇴사  (0) 2020.03.24
[백준 12100] 2048(Easy)  (0) 2020.02.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함