728x90
1. 정의
우선 DFS와 BFS의 정의부터 간략하게 다시 알고 가도록 하자.
DFS
깊이 우선 탐색이라는 이름에 맞게 탐색할 노드를 깊이를 우선으로 탐색하는 알고리즘이다.
DFS의 구현은 Stack 또는 재귀적인 특징을 이용해 구현한다.
BFS
너비 우선 탐색은 넓게 바로 아래 하위 노드를 모두 넓게 탐색한 뒤 그 아래의 노드들을 탐색하는 알고리즘이다.
큐를 이용해 탐색을 관리한다.
2. 구분 방법
그렇다면, 실제 코테나 문제를 해결할 때 무엇을 언제 사용해야하나?
우선 그 문제를 분석해봐야한다.
그래프 탐색에서 모든 정점을 방문하는가?
DFS와 BFS 둘 다 가능하다.
경로의 특징을 저장 혹은 조합, 순열을 구해야 하는 문제인가?
고로타면 DFS를 이용하는게 유리하다.
최단 경로, 최단 거리를 구해야 하는 문제인가?
그렇다면 BFS를 이용하는게 유리하다.
예시 문제
그렇다면 예시 문제를 보도록 할까?
내가 뽑은 DFS 예시 문제
위의 문제 모두 조합 또는 순열, 경로의 특징을 이용한 문제들이다.
내가 뽑은 BFS 문제들
위의 문제들에서 볼 수 있듯이 bfs는 최단기간 혹은 최단경로를 구할 때 유용한 알고리즘이다.
728x90
'CS' 카테고리의 다른 글
Hash Table (0) | 2024.07.12 |
---|---|
자료구조 / 힙 Heap (0) | 2024.03.08 |
슬라이딩 윈도우 알고리즘과 투 포인터 알고리즘 (0) | 2023.07.11 |
알고리즘 / 해시(Hash) (0) | 2022.06.25 |
알고리즘 / 이분 탐색(이진 탐색) (0) | 2022.06.24 |