백준 1260번 - DFS와 BFS
백준 1260번 바로가기 나의 풀이 edgeList = [] n, m, v = map(int, input().split()) for _ in range(m): a, b = map(int, input().split()) edgeList.append((a, b)) edgeList.append((b, a)) def dfs(adjacencyList, root): stack = [root] visitedList = [] while stack: current = stack.pop() if current not in visitedList: visitedList.append(current) temp = adjacencyList[current - 1] temp.sort(reverse=True) stack += temp return visitedList def bfs(adjacencyList, root): from collections import deque queue = deque([root]) visitedList = [] while queue: current = queue.popleft() if current not in visitedList: visitedList.append(current) temp = adjacencyList[current - 1] temp.reverse() queue += temp return visitedList adjacencyList = [[] for _ in range(n)] for edge in edgeList: adjacencyList[edge[0] - 1].append(edge[1]) print(*dfs(adjacencyList, v)) print(*bfs(adjacencyList, v)) CODE REVIEW DFS와 BFS를 구현하고 방문한 Node(Vertex)를 순서대로 출력하는 문제였다. 중간 순서가 자꾸 꼬여서 코드를 살펴봤는데, current에 연결된 vertex를 저장할 때에 stack/queue를 reverse 시켜줘야 했다. 그래프 이론의 기본 DFS & BFS에 대해서는 이제 어느정도 익숙해졌는데, 더 상위 문제를 풀어가며 그래프 이론을 더 알아가봐야겠다.