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
- 서버 엔지니어
- 2798블랙잭
- tmax tibero
- 올 겨울은 조금 따뜻할 것 같다.
- java #추상클래스
- 단계10
- 주니어 백엔드 개발자
- Spring
- Next.js
- 나는야 4학년 #5학년 까지 가보자구
- 정보처리기사 실기 #정처기 실기 #2024년 2회 #정처기 2024년 2회 #공부법 # 꿀팁
- 반복문
- 넥슨개발자컨퍼런스
- static #자바 메모리 구조 #멤버 변수
- tibero 7.23
- 이분탐색
- java #예외처리 #throw #throws
- 백엔드 개발자 로드맵
- 25304번
- object 클래스 # java
- 자바 #자바문법 #자바기초 #참조형 #기본형
- level2
- 브루트 포스법
- level3
- heap area #stack area #static area #jvm
- software enginner
- server engineer
- ndc2025
- 서버 개발자
- server developer
Archives
- Today
- Total
개발자 쿠키
[백준] BFS와 DFS 백준 파이썬, 추천 문제, 누구나 쉽게 DFS BFS 이해시키기 본문
BFS DFS
이제는 그만 두려워하고, BFS DFS를 완전히 정복해보자.
예시문제는 백준의 BFS와 DFS이다
https://www.acmicpc.net/problem/1260
아이디어
- 입력 값 받기
- 그래프 선언
- DFS/BFS 함수
- 함수 실행




전체코드
from collections import deque
n, m, v = map(int, input().split())
graph = [[False] * (n+1) for _ in range(n+1)]
for i in range(m):
x, y = map(int, input().split())
graph[x][y] = 1
graph[y][x] = 1
# 방문 여부를 담을 리스트
visited1 = [False] * (n+1)
visited2 = [False] * (n+1)
def dfs(v):
visited1[v] = True
print(v, end=" ")
for i in range(1, n+1):
if not visited1[i] and graph[v][i] == 1:
dfs(i)
def bfs(v):
queue = deque([v])
visited2[v] = True
while queue:
v = queue.popleft()
print(v, end=" ")
for i in range(1, n+1):
if not visited2[i] and graph[v][i] == 1:
queue.append(i)
visited2[i] = True
dfs(v)
print()
bfs(v)
BFS 정리
- queue선언 deque를 사용할 것
- while문을 돌아 queue에 값이 없을 때 까지 반복하는 로직 구성
- queue 맨 앞에 있는 정점을 popleft하고 갤 기준으로 방문할 수 있는 모든 정점들을 append
- 붙인 정점들 중 가장 앞에 있는 것을 꺼내고 넣고 꺼내고 반복
- 새로운 노드가 추가되지 않으면 그 떄까지 큐에 남아있는 것을 모두 비우고 함수를 빠져 나옴.
정리
DFS: 스택과 재귀함수로 구현할 것
BFS: deque, while로 구현
추천문제
- [ ] 1260 DFS와 DFS
- [ ] 2178 미로탐색
- [ ] 10451 순열 사이클
- [ ] 2331 반복 수열
- [ ] 2667 단지번호붙이기
- [ ] 2468 안전 영역
- [ ] 11724 연결 요소의 개수
- [ ] 1697 숨바꼭질
- [ ] 2606 바이러스 실3
이번주 bfs dfs 완전 내껄로 만들어 보자!
'algorithm' 카테고리의 다른 글
| 백트래킹 부수기 N과 M 시리즈 (0) | 2024.08.19 |
|---|---|
| [백준(BOJ)] 2667번 : 단지번호 붙이기 - Python(파이썬) - (실버1, BFS DFS) (0) | 2024.08.18 |
| [프로그래머스/python] Lv.2 프로세스 (0) | 2024.08.07 |
| [프로그래머스/python] Lv.2 기능개발 (0) | 2024.08.05 |
| [백준(BOJ)]15650번 : 15650 N과 M (2) - Python(파이썬) - (실버3, 순열과 조합) (2) | 2024.08.01 |