-코드
from collections import deque
def dfs(start):
visited[start] = True
print(start, end=' ')
for i in range(1, n + 1):
if not visited[i] and graph[start][i] == 1:
dfs(i)
def bfs(start):
queue = deque([start])
visited2[start] = True
while queue:
start = queue.popleft()
print(start, end=' ')
for i in range(1, n + 1):
if not visited2[i] and graph[start][i] == 1:
queue.append(i)
visited2[i] = True
n, m, v = map(int, input().split())
graph = [[0] * (n + 1) for _ in range(n + 1)]
visited = [False] * (n + 1)
visited2 = [False] * (n + 1)
cnt = n
for _ in range(m):
a, b = map(int, input().split())
graph[a][b] = 1
graph[b][a] = 1
dfs(v)
print()
bfs(v)
예전에 처음 봤을 때 감이 안 잡히던 문제였습니다. 처음에 너비 우선 탐색과 깊이 우선 탐색의 탐색 순서 같은 것은 이해를 했으나 코드를 어떻게 짜야할지 감이 안 잡혀서 책도 사서 읽고 해 봐도 몇 달 동안 풀리지 않아서 결국 참고를 많이 하여 해당 코드에 대한 이해를 하고 해결을 하였지만 혼자서 풀기에는 아직 무리인 것 같아 bfs와 dfs도 이분 탐색이나 dp처럼 많이 풀어야겠다고 생각을 했습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 2606번 바이러스 (0) | 2021.12.30 |
---|---|
[백준/파이썬] 23812번 골뱅이 찍기 - 돌아간 ㅍ (0) | 2021.12.30 |
[백준/파이썬] 23811번 골뱅이 찍기 - ㅌ (0) | 2021.12.29 |
[백준/파이썬] 9711번 피보나치 (0) | 2021.12.28 |
[백준/파이썬] 23794번 골뱅이 찍기 - 정사각형 (0) | 2021.12.28 |