본문 바로가기

Algorithm & Data Structure

DFS & BFS

728x90
반응형

DFS와 BFS를 공부하기 앞서 큐와 스택에 대해서 간단하게 정리해봤다.

 

<Stack & Queue>

 

 


<DFS>

 

아래는 DFS에 관한 정리 및 구현 코드 이다.

 

 

재귀함수를 사용하는 것이 특징이다.

코드와 정리한 그림을 연결지어 생각하면 좋을듯 하다.

 

graph = [
    [],
    [2,3,8],
    [1,7],
    [1,4,5],
    [3,5],
    [3,4],
    [7],
    [2,6,8],
    [1,7]
]
visited = [False] * 9

def dfs(graph, v, visited):
    visited[v] = True
    print(v, end=' ')
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)


dfs(graph, 1, visited)

 


<BFS>

 

아래는 BFS에 관한 정리 및 구현 코드 이다.

 

 

파이썬에서 Queue 사용시 deque를 import해서 사용하는 것이 좋다.

코드와 정리한 그림을 연결지어 생각하면 좋을듯 하다.

 

from collections import deque

graph = [
    [],
    [2,3,8],
    [1,7],
    [1,4,5],
    [3,5],
    [3,4],
    [7],
    [2,6,8],
    [1,7]
]
visited = [False] * 9

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


bfs(graph, 1, visited)
728x90
반응형

'Algorithm & Data Structure' 카테고리의 다른 글

백준 - 1018번  (0) 2022.01.13
백준 - 15649번  (0) 2022.01.09
백준 - 2108번  (0) 2022.01.07
백준 - 1002번  (0) 2021.12.23
백준 - 4948번  (0) 2021.12.23