ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 03. 깊이 우선 탐색(DFS)
    멋사 부트캠프/알고리즘 2025. 5. 15. 11:11

    1. 알고리즘 정의

    Depth-First Search

    한 방향으로 최대한 깊게 탐색한 뒤, 더 이상 갈 곳이 없으면 백트래킹하면서 다른 경로를 탐색하는 알고리즘이야.

     

    [구조]

    A
    ├── B
    │   └── D
    └── C

    BFS 탐색 순서 (시작: A)
    → A → B → D (재귀:백트래킹) → C

     

    2. 알고리즘 구현

    1) 재귀함수 활용

    void dfs(int node, boolean[] visited) {
        visited[node] = true;
        System.out.print(node + " ");
        
        for (int next : graph[node]) {
            if (!visited[next]) {
                dfs(next, visited);
            }
        }
    }

     

    2) Stack 활용

    void dfsStack(int start) {
        Stack<Integer> stack = new Stack<>();
        boolean[] visited = new boolean[n + 1];
    
        stack.push(start);
    
        while (!stack.isEmpty()) {
            int node = stack.pop();
    
            if (!visited[node]) {
                visited[node] = true;
                System.out.print(node + " ");
    
                for (int next : graph[node]) {
                    if (!visited[next]) {
                        stack.push(next);
                    }
                }
            }
        }
    }

     

    3. 활용 예시

    🔍 미로 탐색 출구까지 가능한 경로 찾기
    🧩 백트래킹 N-Queen, 스도쿠, 조합/순열 생성
    🧱 연결 요소 탐색 그래프에서 서로 연결된 그룹 찾기
    🕳️ 사이클 감지 순환 구조 있는지 검사
    🌲 트리 탐색 후위순회(postorder) 등
    🌐 웹 크롤링 링크 따라가며 깊게 탐색
    🎮 게임 맵 탐색 DFS로 갈 수 있는 경로 탐색

    '멋사 부트캠프 > 알고리즘' 카테고리의 다른 글

    04. 넓이 우선 탐색 (BFS)  (3) 2025.05.15
    01. 이분탐색 (Binary Search)  (0) 2025.05.10
    02. 탐욕 알고리즘(Greedy)  (0) 2025.04.23
Designed by Tistory.