우선 간단하게 기본 개념만 확인하고 넘어가보자
도움 될 만한 자세한 설명은 맨 아래에 다른 분의 링크가 있으니,
여기서는 진짜 문제 풀이하는데 딱 필요한 정도로만 확인합시다
DFS
깊이 우선 탐색
출처
- 모든 노드를 방문한다.
- 재귀적인 특징을 가진다.
- stack을 사용한다고도 하던데 난 재귀함수 로만 했다
BFS
너비 우선 탐색
출처
- 루트 노드(지정한 임의의 노드)에서 시작해서 가까운 노드를 먼저 탐색한다.
- 시작에서 인접한 노드들부터 방문한다.
- Queue 를 사용한다.
판단 방법
DFS
- 모든 노드를 확인해야 할 경우
- 경로의 특징을 저장해야할 경우 (서로 다른 가중치를 갖고 있다던가 제약이 있을 때)
BFS
- 최단 거리
- 임의의 경로 찾기 (미로탐색)
이 블로그 글을 보면서 이해가 너무 잘 됐다. 특히 BFS 그림 👍
https://foameraserblue.tistory.com/188#comment6726525
많은 것을 배웠습니다, 감사합니다.