본문 바로가기
💡Algorithm/python

[python]1260_DFS와 BFS

by haegomm 2023. 9. 7.

사용한 자료구조 및 개념 : DFS, BFS, deque

 

💡 문제풀이 아이디어 및 어려웠던 점

💫 아이디어

1️⃣ dfs를 재귀로 구현한다.

2️⃣ bfs를 deque을 사용하여 구현한다.


👻 어려웠던 점

🚨 문제 틀림

❓이유

: 문제의 요구사항에서 낮은 번호를 우선으로 방문해야 한다는 것을 놓쳤다..!

 

❗해결 :

graph = [sorted(g) for g in graph]

를 추가하였다!

 


 

Solution Code & 주석

import sys
from collections import deque

input = sys.stdin.readline

def dfs(graph, start, visited):
    visited[start] = True
    result = [start]

    for next_node in graph[start]:
        if not visited[next_node]:
            result.extend(dfs(graph, next_node, visited))
    return result

def bfs(graph, start, visited):
    visited[start] = True
    result = [start]
    queue = deque([start])

    while queue:
        node = queue.popleft()
        for next_node in graph[node]:
            if not visited[next_node]:
                visited[next_node] = True
                result.append(next_node)
                queue.append(next_node)
    return result

n, m, v = map(int, input().split())
graph = [[] for _ in range(n + 1)]
dfs_visited = [False] * (n + 1)
bfs_visited = [False] * (n + 1)

for _ in range(m):
    v1, v2 = map(int, input().split())
    graph[v1].append(v2)
    graph[v2].append(v1)

graph = [sorted(g) for g in graph]

print(*dfs(graph, v, dfs_visited))
print(*bfs(graph, v, bfs_visited))

 

'💡Algorithm > python' 카테고리의 다른 글

[python]1325_효율적인 해킹  (0) 2023.09.08
[python]11725_트리의 부모 찾기  (0) 2023.09.07
[python]2060_바이러스  (0) 2023.09.06
[python]21942_부품 대여장  (0) 2023.09.05
[python]2696_중앙값 구하기  (0) 2023.08.23