728x90
반응형
# 오늘의 문제
BFS ( Breadth-First Search) 예시코드
# BFS
너비우선 탐색 - 그래프 ( 간선과 노드로 이루어진) 라는 자료구조를 탐색하는 문제가 많이 출제된다. 거기에서 사용하는 알고리즘이라고 표현할 수 있겠다.
아래의 코드는 해당 그래프를 BFS 로 탐색하는 방법의 예시를 코드로 옮겨 놓은 것이고 이로써 직접 작성해보며 BFS 에 대한 이해를 높이기 위해 서술 해두었다.
from collections import deque
def bfs(graph, start, visited):
queue = deque([start])
visited[start] = True
while queue:
#이부분에 print(queue) 하면 이해가 쉽다.
v = queue.popleft()
print(v, end=' ')
#이 부분이 큐를 활용해서 BFS를 구현하는 핵심이라 볼 수 있다.
# [1] -> [1,2,3,8] 들어가면 1빼고 루프 2빼고 루프
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)
728x90
'프로그래밍 회고록 > Python' 카테고리의 다른 글
2021.11.22 코테_선택 정렬 연습 (0) | 2021.11.22 |
---|---|
2021.11.14 코테_음료수 얼려 먹기 (0) | 2021.11.14 |
2021.11.13 코테_DFS 예시코드 (0) | 2021.11.13 |
2021.10.27 코테_게임 개발 (0) | 2021.10.27 |
2021.10.25 코테_왕실의 나이트 (0) | 2021.10.26 |