본문 바로가기
알고리즘/백준

[백준]230119 문제풀이

by stubborngastropod 2023. 1. 20.
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

댓글