-
반응형
1. 생각 정리
- 처음에 간선 정보 입력을 2차원 리스트에 [[1,2], [1,3]]이런 식으로 담으려 했는데 문제를 더 간단히 풀기 위해서는 빈 2차원 리스트를 생성한 뒤 1행에 1과 연결된 정점 넣어주기, 2행에 2와 연결된 정점 넣어주기... 의 느낌으로 입력받는 게 더 편함
- visited 리스트를 따로 만들어서 이미 탐색된 정점에 대한 정보를 관리
- DFS의 경우에는 재귀함수로, BFS의 경우에는 deque를 이용하여 구현
2. 코드 구현
from collections import deque #정점 개수 N, 간선 개수 M, 탐색 시작 정점번호 V N, M, V = map(int, input().split()) mapp = [[] for _ in range(N+1)] #두개의 정점이 연결되어있다는 간선정보 for _ in range(M): x, y = map(int, input().split()) mapp[x].append(y) mapp[y].append(x) for i in mapp: i.sort() def dfs(V): print(V, end=' ') visited[V] = True for i in mapp[V]: if visited[i] == False: dfs(i) def bfs(V): q = deque([V]) while q: temp = q.popleft() if not visited[temp]: visited[temp] = True print(temp, end=' ') for i in mapp[temp]: if not visited[i]: q.append(i) visited = [False]*(N+1) dfs(V) print() visited = [False]*(N+1) bfs(V)
반응형'IT > 백준' 카테고리의 다른 글
[백준] 1012 유기농 배추(Python) (0) 2021.10.13 [백준] 1697 숨바꼭질(Python) (0) 2021.10.12 [백준] 11053 가장 긴 증가하는 부분 수열(Python) (0) 2021.10.11 [백준] 12865 평범한 배낭(Python) (0) 2021.10.11 댓글