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 |
Tags
- 삼성SDS Brightics
- 개인 의료비 예측
- 삼성 SDS Brigthics
- 직원 이직여부
- 직원 이직률
- 혼공학습단
- 추천시스템
- 데이터분석
- Brigthics를 이용한 분석
- Brightics Studio
- 포스코 청년
- 삼성SDS
- 삼성SDS Brigthics
- 모델링
- 캐글
- Brigthics Studio
- 팀 분석
- Brightics
- 삼성 SDS
- 혼공
- 브라이틱스 서포터즈
- 브라이틱스
- 혼공머신러닝딥러닝
- 포스코 아카데미
- 노코드AI
- 영상제작기
- Brightics를 이용한 분석
- Brigthics
- 혼공머신
- 데이터 분석
Archives
- Today
- Total
데이터사이언스 기록기📚
[백준/Python] 1260번(DFS, BFS)_DFS와 BFS 본문
📌문제 유형
DFS, BFS(실버 2)
📌문제
📌나의 문제풀이
from collections import deque
n, m, v = map(int, input().split())
maps = [[] for _ in range(n+1)]
n_set = []
for _ in range(m):
a,b = map(int, input().split())
maps[a].append(b)
maps[b].append(a)
if a not in n_set:
n_set.append(a)
if b not in n_set:
n_set.append(b)
# maps 정렬하기
for i in range(len(maps)):
maps[i].sort()
def dfs(v):
# 더 이상 방문할 점이 없는 경우 종료
# v가 비어있는 경우 종료
global visited_d
if n_set == []:
return
if maps[v] == []:
return
for next in maps[v]:
if next not in visited_d:
visited_d.append(next)
n_set.remove(next)
dfs(next)
# DFS
visited_d = []
visited_d.append(v)
if v in n_set:
n_set.remove(v)
dfs(v)
print(*visited_d)
# BFS
visited_b = []
q = deque([])
q.append(v)
while q:
now = q.popleft()
visited_b.append(now)
for n in maps[now]:
if n not in visited_b and n not in q:
q.append(n)
print(*visited_b)
📌다른사람의 문제풀이
- 2차원 표에서 0,1로 나타냄
N,M,V = map(int,input().split())
#행렬 만들기
graph = [[0]*(N+1) for _ in range(N+1)]
for i in range (M):
a,b = map(int,input().split())
graph[a][b] = graph[b][a] = 1
#방문 리스트 행렬
visited1 = [0]*(N+1)
visited2 = visited1.copy()
#dfs 함수 만들기
def dfs(V):
visited1[V] = 1 #방문처리
print(V, end=' ')
for i in range(1, N+1):
if graph[V][i] == 1 and visited1[i] == 0:
dfs(i)
#bfs 함수 만들기
def bfs(V):
queue = [V]
visited2[V] = 1 #방문처리
while queue:
V = queue.pop(0) #방문 노드 제거
print(V, end = ' ')
for i in range(1, N+1):
if(visited2[i] == 0 and graph[V][i] == 1):
queue.append(i)
visited2[i] = 1 # 방문처리
dfs(V)
print()
bfs(V)
📌리뷰
- DFS에서 Typeerror 반환하는 이유
- v에 탐색할 그래프 없는 경우
- dfs가 해당 정점에서 탐색 끝난 후, 다시 위로 올라가지 못한 경우
- 이 문제는 DFS에서 인접행렬(2차원)으로 표시하는게 재귀탈출에 용이
- DFS 그래프 표현방식 : 인접행렬, 인접 리스트
728x90
'Coding Test > 백준(Python)' 카테고리의 다른 글
[백준/Python] 1012번(BFS,DFS)_유기농 배추 (0) | 2024.03.12 |
---|---|
[백준/Python] 1107번(구현)_리모컨 (0) | 2024.03.12 |
[백준/Python] 16724번(DFS)_피리 부는 사나이 (0) | 2024.02.29 |
[백준/Python] 9935번(구현)_문자열 폭발 (0) | 2024.02.27 |
[백준/Python] 17144번_미세먼지 안녕! (0) | 2024.02.23 |
Comments