일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 알고리즘
- CSS
- 문자열
- 그래프 이론
- 그래프이론
- BFS
- 다이나믹 프로그래밍
- 백준
- DP
- lv2
- 웹 프론트엔드
- 프로그래머스
- 정렬
- 그래프 탐색
- DFS
- 브루트포스 알고리즘
- 프로그래머스스쿨
- web
- 자료구조
- 너비 우선 탐색
- JavaScript
- level2
- 스택
- 구현
- 자바스크립트
- programmers
- 파이썬
- 그리디 알고리즘
- BASIC
- 딕셔너리
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 |