728x90
1260. DFS와 BFS
N, M, V = map(int, input().split())
# 2차원 인접행렬
adj_matrix = []
for i in range(N + 1):
adj_matrix.append([0] * (N + 1))
for i in range(M):
a, b = map(int, input().split())
adj_matrix[a][b], adj_matrix[b][a] = 1, 1
dfs_visited = []
def dfs(graph, root):
dfs_visited.append(root)
print(root, end = ' ')
for i in range(1, N + 1):
if graph[root][i] == 1 and i not in dsf_visited:
newroot = i
dfs(graph, newroot)
else:
None
dfs(adj_matrix, V)
개념 이해는 빠르게 됐는데, 인접행렬이랑 인접리스트 개념을 애초에 몰랐고... 재귀함수를 처음 써보는지라 dfs 함수 구현하는데만 한세월이었다. stack 개념을 이용하지도 않았고 반복문에서 else 처리를 좀 엉성하게 한 것 같긴 하지만... 어쨌든 예제는 돌아가니 일단 오늘은 마무리. 내일은 bfs 구현해보는게 목표인데 이건 반드시 queue를 써야 하는 것 같아서 고민을 많이 해봐야겠다.
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준]230124 문제풀이 (0) | 2023.01.24 |
---|---|
[백준]230121 문제풀이 (2) | 2023.01.21 |
[백준]230118 문제풀이 (0) | 2023.01.18 |
[백준]230117 문제풀이 (0) | 2023.01.17 |
[백준]230116 문제풀이 (0) | 2023.01.16 |
댓글