BFS, DFS 정리

Posted by : on

Category : PS


BFS와 DFS 문제 유형 및 코드 기본형

코딩 테스트에서 자주 나오는 BFS(Breadth-First Search, 너비 우선 탐색)와 DFS(Depth-First Search, 깊이 우선 탐색) 문제의 유형과 그에 대한 코드 기본형

BFS 문제 유형 예시

  • 최단 경로 찾기: 미로 찾기 같은 문제에서 출발점부터 목적지까지 가는 최단 경로를 찾을 때 사용된다.
  • 레벨 별 노드 방문: 트리나 그래프에서 같은 레벨에 있는 노드들을 순서대로 방문하고 싶을 때 사용한다.

DFS 문제 유형 예시

  • 경로의 존재 여부 확인: 미로 찾기에서 한 지점에서 다른 지점까지 경로가 있는지 없는지를 확인할 때 사용된다.
  • 사이클 찾기: 그래프 내에서 사이클(cycle)이 있는지 확인할 때 사용된다.

코드 기본형

BFS 코드 기본형 (Python)

from collections import deque

def bfs(graph, start, visited):
    queue = deque([start])
    visited[start] = True
    while queue:
        v = queue.popleft()
        print(v, end=' ')
        for i in graph[v]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True
  • graph: 노드 연결 정보를 담고 있는 리스트나 딕셔너리
  • start: 탐색을 시작할 노드
  • visited: 각 노드의 방문 여부를 담고 있는 리스트

DFS 코드 기본형 (Python)

def dfs(graph, v, visited):
    visited[v] = True
    print(v, end=' ')
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)
  • graph: 노드 연결 정보를 담고 있는 리스트나 딕셔너리
  • v: 현재 방문하고 있는 노드
  • visited: 각 노드의 방문 여부를 담고 있는 리스트

About Sejun Jeong
Sejun Jeong

Seize the day with programming

Email : usopked16496@gmail.com

Website : https://usopked.github.io

About UPKED

2024년
2025년

Star
Categories
Useful Links