반응형
문제
https://www.acmicpc.net/problem/13549
13549번: 숨바꼭질 3
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
풀이
이 문제는 간선의 비용이 0 또는 1이기 때문에 0-1 BFS를 사용하여 풀이할 수 있습니다.
또는 다익스트라 알고리즘을 사용해도 무방합니다.
0-1 BFS로 풀이를 할 때, 간선의 비용이 0인것 부터 처리해주기 때문에 queue보다는 deque 자료구조가 더 어울립니다.
insert 메서드로 큐에 앞부분에 삽입시켜주었는데 이는 시간복잡도가 $O(n)$이기 때문에 조금 느리지만 통과할 수 있었습니다.
다익스트라 알고리즘으로도 풀이를 해보았는데, insert 메서드를 사용한 것 보다는 빨랐습니다.
insert 메서드를 사용하지 않고, deque을 구현해서 풀이를 해보았는데 가장 빨랐습니다.
deque을 직접 구현하지 않고도, 간선의 비용이 0인 것들을 무조건 우선적으로 처리하는 방법으로도 구현이 가능할 것 같습니다.
소스코드
후기
여러가지 방법으로 풀이를 해보았는데, Deque으로 구현한 0-1 BFS가 가장 빨랐습니다.
알아보니 0-1 BFS의 시간복잡도가 다익스트라보다 더 효율적인 것을 확인했습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 11404 플로이드 (Swift) (0) | 2023.04.28 |
---|---|
[BOJ] 백준 11657 타임머신 (Swift) (0) | 2023.04.28 |
[BOJ] 백준 1504 특정한 최단 경로 (Swift) (0) | 2023.04.27 |
[BOJ] 백준 1753 최단경로 (Swift) (0) | 2023.04.27 |
[BOJ] 백준 1707 이분 그래프 (Swift) (0) | 2023.04.27 |