본문 바로가기
코딩 테스트/DFS, BFS

BFS

by hazel_ 2021. 1. 25.

p.146

 

BFS(Breadth First Search) : 너비 우선 탐색

* 큐를 사용(deque)

* graph를 인접 리스트 사용

* visited로 방문했는지 여부 확인

 

[동작 과정]

1. 탐색 시작 노드를 큐에 삽입하고 방문 처리

2. 큐에서 popleft()를 하여 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 큐에 append

3. 2번 과정을 더 이상 수행할 수 없을 때까지 반복

 

 

from collections import deque

def bfs(graph, start, visited):
  queue=deque()
  queue.append(start)
  visited[start]=True

  # queue가 빌 때까지 반복
  while queue:
    v=queue.popleft()
    print(v,end=' ')
    
    for i in graph[v]:
      if not visited[i]:
        queue.append(i)
        visited[i]=True


graph=[
  [],
  [2,3,8],
  [1,7],
  [1,4,5],
  [3,5],
  [3,4],
  [7],
  [2,6,8],
  [1,7]
]

visited=[False]*9

bfs(graph,1,visited)

 

[결과]

1 2 3 8 7 4 5 6

'코딩 테스트 > DFS, BFS' 카테고리의 다른 글

연구소  (0) 2021.01.26
특정 거리의 도시 찾기  (0) 2021.01.26
미로 탈출  (0) 2021.01.25
음료수 얼려 먹기  (0) 2021.01.25
DFS  (0) 2021.01.25

댓글