백준/ Gold 5 문제 , 백준 파이썬 13549, 숨바꼭질 3 [0-1 BFS]
Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하
<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
<덧붙일 말>
단순 BFS 로 운좋게 풀리는 경우가 있겠지만, 이 문제는 0-1 BFS 로 풀어야 출제의도에 맞는 문제이다.
<문제 출처>
https://www.acmicpc.net/problem/13549
------------------------------------------------------------------------------------------------------------------------------
단순 BFS 문제 같지만, 우연찮게 답이 맞는 것이다.
pos*2 , pos-1, pos+1 순으로 for 문을 돌리면 걸리지 않지만, 여기서 순서가 바뀌게 되면 틀릴것이다.
이 문제는 0과 1의 가중치를 따져서 시간이 빠른 구간들을 우선적으로 탐색해야한다.
즉, 방문횟수 보다 가중치가 최소인 경우를 따져서 구한다.
따라서, 문제 의도대로라면 0-1 BFS를 적용해서 풀어야한다.
1. 가중치가 0인 경우와 1인 경우를 구분한다.
2. 가중치가 0일 경우 deque의 앞에 넣어 우선적으로 탐색할 수 있게 해준다.
3. 가중치가 1일 경우 deque의 뒤에 넣어준다.
https://www.acmicpc.net/board/view/38887#comment-69010
* 이 질문 게시판의 답변 풀이 중
2번 방법(0-1 BFS: 가중치가 0인 간선에 연결된 정점은 큐의 맨 뒤가 아닌 맨 앞에 넣는 방법) 을 참조하였다.
가중치가 0인 경우가 있다면 단순한 BFS를 쓸 수 없으니 이때는 다른 방법으로 접근하자.
------------------------------------------------------------------------------------------------------------------------------
정답
1. 단순 BFS (pos*2, pos-1, pos+1 이 순서 바뀌면 틀림)
2. 0-1 BFS (순서를 바꾸어도 틀리지 않음.)
'알고리즘 공부 > 백준 - 파이썬' 카테고리의 다른 글
백준/ Bronze 1 문제 , 백준 파이썬 2167 , 2차원 배열의 합 (0) | 2022.07.21 |
---|---|
백준/ Gold 4 문제 , 백준 파이썬 1261, 알고스팟 [0-1 BFS] (0) | 2022.07.20 |
백준/ Silver 1 문제 , 백준 파이썬 1926, 그림 [BFS] (0) | 2022.07.20 |
백준/ Silver 1 문제 , 백준 파이썬 2583, 영역 구하기 [BFS] (0) | 2022.07.20 |
백준/ Silver 2 문제 , 백준 파이썬 11060 , 점프 점프 (0) | 2022.07.19 |