BFS,DFS
2021. 10. 8.
프로그래머스 문제를 풀다가 bfs, dfs문제를 만나게 되어 공부를 해야겠다 싶어 공부를 해봤다. BFS(너비 우선 탐색) 우선 bfs는 breadth-first-search의 약자로 최대한 넓게 이동한 다음, 이동할 수 없게 되었을 때 밑으로 이동하는 것이다. 쉽게 그래프로 보자면 위와 같다. 루트 노드에서 인접 노드를 먼저 탐색하는 방법이다. 즉 가장 멀리 떨어져 있는 노드를 젤 나중에 찾아가는 방법으로 최단 경로를 찾을 때 많이 사용하는 탐색 방식이다. 큐를 이용해서 구현할 수 있으며 시간 복잡도는 접점을 V, 간선을 E라고 한다면 인접 리스트 O(V+E)가 되고, 인접 행렬은 O(V^2)가 된다. 파이썬 코드로 한번 구현해보자. 처음에는 list를 이용하여 pop 하는 형식으로 구현했지만 효율성 ..