9. [Java] DFS (깊이 우선 탐색)CS/알고리즘2025. 2. 21. 12:35
Table of Contents
⭐️ DFS (Depth First Search)
- 정해진 규칙에 의해 시작 정점에서 멀어지는 방향 우선으로 탐색하는 방법
- 일반적으로 재귀함수를 사용해서 구현한다. (Stack으로도 구현 가능하지만, 구현이 상당히 복잡해진다.)
- 그래프가 트리 형태일 때, DFS 알고리즘이 자주 쓰인다.
- 최단거리를 구하기에는 적합한 알고리즘이 아니다. (시간 초과 주의)
- 재귀로 구현된다는 점에서 Backtracking 과 유사하다.
📝 DFS (Depth First Search) 탐색 구현 방법
- 방문 체크 용 (재방문 방지) 배열을 만든다.
- 현재 정점을 파라미터로 넘겨 받는 함수(메소드)를 정의한다.
- 함수(메소드) 내부에서..
- 현재 정점이 이미 방문한 정점이면 return 한다.
- 현재 정점의 방문 체크를 한다.
- 해당 정점에서 방문 가능한 다음 정점을 파라미터 넘기면서 현재 함수를 재귀 호출한다.
- (필요한 경우) 해당 정점이 유효한 정점인지 체크한다.
- (필요한 경우) 해당 정점으로 이동 가능한지 체크한다.
Tip) 가중치가 같으면 BFS 사용, 가중치가 다르면 다익스트라 사용
'CS > 알고리즘' 카테고리의 다른 글
12. [Java] 투 포인터 (2-Pointer) (0) | 2025.03.21 |
---|---|
11. [Java] DP (Dynamic Programming : 동적 계획법) (0) | 2025.02.25 |
10. [Java] Backtracking (퇴각 검색) (1) | 2025.02.25 |
8. [Java] 그래프 기초 / BFS (너비 우선 탐색) (0) | 2025.02.19 |
@킴준현 :: 차근차근 꾸준히
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!