CS/알고리즘
9. [Java] DFS (깊이 우선 탐색)
킴준현
2025. 2. 21. 12:35
⭐️ DFS (Depth First Search)
- 정해진 규칙에 의해 시작 정점에서 멀어지는 방향 우선으로 탐색하는 방법
- 일반적으로 재귀함수를 사용해서 구현한다. (Stack으로도 구현 가능하지만, 구현이 상당히 복잡해진다.)
- 그래프가 트리 형태일 때, DFS 알고리즘이 자주 쓰인다.
- 최단거리를 구하기에는 적합한 알고리즘이 아니다. (시간 초과 주의)
- 재귀로 구현된다는 점에서 Backtracking 과 유사하다.
📝 DFS (Depth First Search) 탐색 구현 방법
- 방문 체크 용 (재방문 방지) 배열을 만든다.
- 현재 정점을 파라미터로 넘겨 받는 함수(메소드)를 정의한다.
- 함수(메소드) 내부에서..
- 현재 정점이 이미 방문한 정점이면 return 한다.
- 현재 정점의 방문 체크를 한다.
- 해당 정점에서 방문 가능한 다음 정점을 파라미터 넘기면서 현재 함수를 재귀 호출한다.
- (필요한 경우) 해당 정점이 유효한 정점인지 체크한다.
- (필요한 경우) 해당 정점으로 이동 가능한지 체크한다.
Tip) 가중치가 같으면 BFS 사용, 가중치가 다르면 다익스트라 사용