BFS & DFS 알고리즘
#너비 우선 탐색 #깊이 우선 탐색
백준 1260번 : DFS와 BFS
- 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색
1. 풀이
from collections import defaultdict
n, m, start = list(map(int,input().split()))
graph=defaultdict(list)
for _ in range(m):
a,b=list(map(int,input().split()))
graph[a].append(b)
graph[b].append(a)
# 리버스 안하면 오른쪽부터 dfs돈다.
for a in graph.values():
a.sort(reverse=True)
def dfs(graph, start_node):
visited = list()
need_visit = list()
need_visit.append(start_node)
while need_visit:
node = need_visit.pop()
if node not in visited:
visited.append(node)
need_visit.extend(graph[node])
return visited
result=dfs(graph, start)
for i in result:
print(i, end=' ')
print()
# 리버스 안하면 왼쪽부터 bfs돈다.
for a in graph.values():
a.sort()
def bfs(graph, start_node):
visited = list()
need_visit = list()
need_visit.append(start_node)
while need_visit:
node = need_visit.pop(0)
if node not in visited:
visited.append(node)
need_visit.extend(graph[node])
return visited
result=bfs(graph, start)
for i in result:
print(i, end=' ')백준 1697번 : 숨바꼭질
- 그래프 이론, 그래프 탐색, 너비 우선 탐색
1. 정답
2. 두 번째 정답 풀이
백준 2606번 : 바이러스
- 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선탐색
1. 풀이
백준 1012번 : 유기농 배추
- 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선탐색
1. 풀이
백준 1325번 : 효울적인 해킹
- 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선탐색
1. 첫 풀이
2. 시간 내 풀이
첫 번째 풀이랑 다를 게 없는데 왜 시간초과가 안 뜨는 지 모르겠다. bfs count계산 후 로직은 두 풀이의 반복문을 비교해봤을 때 시간복잡도에 영향이 미미하고, bfs자체 로직도 첫 풀이가 오히려 반복문이 하나 더 줄어 있는데 말이다.
Last updated