일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- CSS
- 문자열
- 그래프 탐색
- 프로그래머스스쿨
- 그리디 알고리즘
- 다이나믹 프로그래밍
- DP
- programmers
- 정렬
- 자료구조
- 그래프 이론
- JavaScript
- 백준
- DFS
- web
- lv2
- BFS
- 딕셔너리
- 너비 우선 탐색
- 그래프이론
- BASIC
- 스택
- 웹 프론트엔드
- 구현
- 브루트포스 알고리즘
- 프로그래머스
- 알고리즘
- 자바스크립트
- 파이썬
- level2
Archives
- Today
- Total
DevLog:-)
[알고리즘][파이]1260-DFS와 BFS ✅ 본문
반응형
문제
코드
import sys
from collections import deque
N,M,V = map(int,sys.stdin.readline().strip().split())
graph =[[] for _ in range(N+1)]
def dfs(cur_v):
visited.append(cur_v)
for v in graph[cur_v]:
if(v not in visited):
dfs(v)
return visited
def bfs(start_v):
visited=[start_v]
q = deque()
q.append(start_v)
while(q):
cur_v =q.popleft()
for v in graph[cur_v]:
if(v not in visited):
visited.append(v)
q.append(v)
return visited
for i in range(M):
a,b = map(int,sys.stdin.readline().strip().split())
#if(a not in graph): graph[a]=list()
#if(b not in graph): graph[b]=list() #딕셔너리로 풀려면 필요한 코드
graph[a].append(b)
graph[b].append(a)
for i in graph:
i.sort()
visited=[]
print(*dfs(V))
visited = [False]*(N+1)
print(*bfs(V)) #*을 붙이면 데이터 이외의 요소를 제거할 수 있다.
DFS와 BFS의 기본적인 코드를 요구하는 문제이다.
+풀면서 겪은 일
#처음에 시간복잡도를 줄일 수 있는 딕셔너리를 이용해서 풀려다가 빠른 sort()처리를 위해 이중 배열로 바꿔서 풀었다.
#딕셔너리는 바로 append가 불가능 해서 데이터를 담을 때 아무 것도 없는 list()로 초기화해주는 코드가 필요하다.
#반면 이중 배열을 사용할 때는 바로 append를 사용할 수 있다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[알고리즘][파이썬]2667-단지번호붙이기 (0) | 2023.05.20 |
---|---|
[알고리즘][파이썬] 2178-미로 탐색 (1) | 2023.05.17 |
[알고리즘][파이썬]2606-바이러스 (0) | 2023.05.16 |
[알고리즘][파이썬]1149-RGB거리 (0) | 2023.05.14 |
[알고리즘][파이썬]2504-괄호의 값 (0) | 2023.05.14 |