Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Git
- 운체 1주차
- 자료구조
- 그리디
- python기본
- 최단거리
- 인스타
- 스택
- python기초
- 코딩테스트
- c언어 제어문
- git 오류
- python자료형
- git오류
- 4장
- DP
- c언어
- 참고X
- 코테
- 백준
- 5장
- git기초
- 1주차(1)
- 파이썬 알고리즘 인터뷰
- 도커
- c언어 기본
- 데베시 1주차
- #코린이 #코딩 #할 수 있다
- Workbench
- 인텔리제이
Archives
- Today
- Total
하루살이 개발자
[BaekJoon 1260번] DFS와 BFS 문제(Python) 본문
DFS와 BFS 문제입니다.
문제링크: https://www.acmicpc.net/problem/1260
Code
import sys
from collections import deque
input = sys.stdin.readline
n, m, v = map(int,input().split())
# 인접 리스트
graph = [[]*n for _ in range(n+1)]
for _ in range(m): # 간선의 개수 만큼 반복
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
# 정렬 안하면 실
graph[a].sort()
graph[b].sort()
# DFS
def dfs_recursive(graph, start, visited=[]):
visited.append(start) # 방문한 노드 추가
for node in graph[start]:
if node not in visited: # 끝까지 갔을 때(깊이)
dfs_recursive(graph, node, visited) # 깊이 탐색
return visited
# BFS
def bfs_iteration(graph, root):
visited = [] # 방문한 노드
queue = deque([root]) # bfs는 queue 사용
while (queue): # queue에 남은 것이 없을 때까지
node = queue.pop() # 현재 방문하는 노드
# node를 방문한 적 없다 -> visited에 추가
# 해당 노드의 자식 노드들을 queue에 추가
if node not in visited:
visited.append(node)
queue.extendleft(graph[node])
return visited
# 띄어쓰기 형태로 출력
def result(fun):
for i in range(len(fun)):
print(fun[i], end = ' ')
result(dfs_recursive(graph,v))
print()
result(bfs_iteration(graph,v))
'코딩테스트' 카테고리의 다른 글
[BaekJoon 1197번] 최소스패닝트리 문제(Python) (0) | 2022.02.23 |
---|---|
[BaekJoon 2667번] 단지번호붙이기 문제(Python) (0) | 2022.02.23 |
[BaekJoon 9020번] 골드바흐의 추측 문제(Python) (0) | 2022.02.20 |
[BaekJoon 4948번] 베르트랑 공준(Python) (0) | 2022.02.20 |
[BaekJoon 1717번] 집합의 표현 문제(Python) (0) | 2022.02.20 |