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 |
Tags
- 그리디
- 인스타
- 참고X
- 최단거리
- 데베시 1주차
- 파이썬 알고리즘 인터뷰
- git기초
- 4장
- Workbench
- python기본
- c언어 기본
- 5장
- #코린이 #코딩 #할 수 있다
- 백준
- 도커
- 코테
- git 오류
- 자료구조
- python기초
- DP
- 인텔리제이
- c언어 제어문
- 1주차(1)
- Git
- git오류
- 코딩테스트
- 운체 1주차
- c언어
- python자료형
- 스택
Archives
- Today
- Total
하루살이 개발자
[BaekJoon 1260번] DFS와 BFS 문제(Python) 본문
DFS와 BFS 문제입니다.
문제링크: https://www.acmicpc.net/problem/1260
1260번: DFS와 BFS
첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사
www.acmicpc.net
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 |