BFS(Breadth-First Search) 너비 우선 탐색
2025. 5. 30. 16:58

BFS(Breadth-First Search, 너비 우선 탐색)는 그래프나 트리에서 시작 노드로부터 가까운 노드부터 탐색하는 알고리즘

✅ 핵심 개념

  • 가까운 노드부터 탐색
  • Queue(큐) 자료구조 사용
  • 최단 거리 탐색에 적합
  • 그래프의 레벨 순서 탐색 가능

📌 예시로 이해하기

     1
   /   \
  2     3
 / \     \
4   5     6

✅ BFS 동작 과정 (요약)

  1. 시작 노드를 큐에 삽입하고 방문 표시
  2. 큐에서 노드를 꺼내서 인접한 노드들을 모두 큐에 추가
  3. 추가할 때 방문하지 않은 노드만 추가
  4. 큐가 빌 때까지 2~3 반복

✅ Java 코드

import java.util.*;

public class BFSExample {
    public static void main(String[] args) {
        // 인접 리스트로 그래프 표현
        Map<Integer, List<Integer>> graph = new HashMap<>();
        graph.put(1, Arrays.asList(2, 3));
        graph.put(2, Arrays.asList(4, 5));
        graph.put(3, Arrays.asList(6));
        graph.put(4, new ArrayList<>());
        graph.put(5, new ArrayList<>());
        graph.put(6, new ArrayList<>());

        bfs(graph, 1);
    }

    public static void bfs(Map<Integer, List<Integer>> graph, int start) {
        Queue<Integer> queue = new LinkedList<>();
        Set<Integer> visited = new HashSet<>();

        queue.offer(start);
        visited.add(start);

        while (!queue.isEmpty()) {
            int node = queue.poll();
            System.out.print(node + " ");

            for (int neighbor : graph.get(node)) {
                if (!visited.contains(neighbor)) {
                    queue.offer(neighbor);
                    visited.add(neighbor);
                }
            }
        }
    }
}

 

'코딩테스트' 카테고리의 다른 글

DFS(Depth-First Search) 깊이 우선 탐색  (0) 2025.05.30
백준 - 9081 번 단어 맞추기  (0) 2025.04.12
SORT 정리 / ArrayTesr  (0) 2025.04.12
NextPermutation  (0) 2025.04.12
CompleteBinaryTree(완전이진탐색)  (0) 2025.04.11