3주차: 탐색¶
3주차에는 탐색과 관련된 문제를 풀이한 내용을 정리하려고 한다.
보통 탐색 문제에서 많이 사용하는 방법은 DFS와 BFS이다. DFS는 깊이 우선 탐색이고 BFS는 너비 우선 탐색이다.
각 탐색 방법의 코드는 어느 정도 정형화 되어 있고 그 내용은 아래와 같다.
DFS
def dfs(graph, start_node):
stack, visited = [], set()
stack.append(start_node)
while stack:
cur_node = stack.pop()
visited.add(cur_node)
for next_node in graph[cur_node]:
if next_node not in visited:
stack.append(next_node)
visited.add(next_node)
return visited
BFS
def bfs(graph, start_node):
queue, visited = deque(), set()
queue.append(start_node)
while queue:
cur_node = queue.popleft()
visited.add(cur_node)
for next_node in graph[cur_node]:
if next_node not in visited:
queue.append(next_node)
visited.add(next_node)
return visited