BFS와 DFS란?
두 방식 모두 조건 내의 모든 노드를 검색한다는 점에서 시간 복잡도는 동일하지만 일반적으로 DFS를 재귀 함수로 구현한다는 점에서 DFS보다 BFS가 조금 더 빠르게 동작한다고 생각하면 됩니다.
일반적으로 인접 리스트와 인접 행렬 중 리스트가 효율적이다 라는 점을 알면 됩니다.
N이 노드의 갯수, E가 간선의 갯수 일 때,
인접 리스트 : O(N+E)
인접 행렬 : O(N^2)
DFS 또는 BFS 사용
DFS 사용
예를 들어 각 정점에 숫자가 적혀있고 a부터 b까지 가는 경로를 구하는데 경로에 같은 숫자가 있으면 안된다는 문제가 있다. 각각의 경로마다 특징을 저장해둬야 할 때는 DFS를 사용한다.(BFS는 경로의 특징을 가지지 못함)
BFS 사용
이는 DFS로 경로 탐색 시 처음으로 발견되는 해답이 최단거리가 아닐 수 있지만, BFS는 현재 노드부터 가까운 곳부터 찾기 때문에 경로 탐색 시 먼저 찾아지는 해답이 곧 최단 거리이기 때문이다.