백준 1260 파이썬 DFS와 BFS를 구현할 수 있는가
2024. 5. 16. 06:45ㆍ코딩 도구/백준
반응형
백준 1260 - DFS와 BFS
문제
https://www.acmicpc.net/problem/1260
답안 코드 :
from collections import deque
N, M, Start = map(int, input().split())
A = [[] for _ in range(N + 1)]
for _ in range(M):
s, e = map(int, input().split())
A[s].append(e) # 양방향 에지이므로 양쪽에 에지를 더하기
A[e].append(s)
for i in range(N + 1):
A[i].sort() # 번호가 작은 노드 부터 방문하기 위해 정렬하기
visited = [False] * (N + 1)
def DFS(v):
print(v, end=' ')
visited[v] = True
for i in A[v]:
if not visited[i]:
DFS(i)
DFS(Start)
visited = [False] * (N + 1) # 리스트 초기화
def BFS(v):
queue = deque()
queue.append(v)
visited[v] = True
while queue:
now_Node = queue.popleft()
print(now_Node, end=' ')
for i in A[now_Node]:
if not visited[i]:
visited[i] = True
queue.append(i)
print()
BFS(Start)
생각 :
# 문제 분석
# DFS와 BFS를 구현할 수 있는가
# 문제 풀이
# 인접 리스트에 그래프를 저장
# DFS를 실행하면서 방문 리스트 체크 + 탐색 노드 기록
# 문제 조건에서 작은 번호의 노드부터 탐색
# 따라서 인접 노드를 오름차순 정렬 후 재귀함수 호출!
# 그리고 BFS도 같은 방식
탐색 알고리즘 정리 블로그
반응형
'코딩 도구 > 백준' 카테고리의 다른 글
백준 1920 파이썬 이진 탐색 O(nlogn) 시간 복잡도 (14) | 2024.05.19 |
---|---|
백준 1167 파이썬 가장 긴 경로를 찾는 방법 관련 아이디어 (28) | 2024.05.18 |
백준 13023 파이썬 DFS의 시간 복잡도 O(V+E) (1) | 2024.05.15 |
백준 2023 파이썬 DFS 재귀함수 (2) | 2024.05.14 |
백준 11724 파이썬 sys.setrecursionlimit() (1) | 2024.05.13 |