[알고리즘/Python] 일반 BFS vs 0-1 BFS(feat. 다익스트라 알고리즘)
·
코딩테스트
그래프 탐색에서 최단 경로를 찾을 때 가장 먼저 떠올리는 알고리즘은 BFS(너비 우선 탐색)입니다. 하지만 모든 간선의 가중치가 1이 아니라, 0과 1이 섞여 있는 상황이라면 일반적인 BFS만으로는 효율적인 해결이 어렵습니다. 이때 사용할 수 있는 알고리즘이 0-1 BFS입니다. 1. 일반 BFS (Breadth-First Search)가장 기본적인 탐색 알고리즘으로, 시작점에서 가까운 노드부터 차례대로 탐색합니다.특징: 모든 간선의 가중치가 동일(보통 1)할 때 사용합니다.자료구조: Queue (Python에서는 collections.deque의 append, popleft 사용)핵심 원리: 큐에 들어간 순서가 곧 시작점으로부터의 거리 순서를 보장합니다.적용 예시: 백준 2178번 미로 탐색 ..
[Python]DFS, BFS 그래프 탐색
·
코딩테스트
1. 그래프 탐색이란?그래프 탐색은 그래프의 각 노드(정점)를 방문하는 과정이다. 대표적으로 아래 두 가지가 있다.1. DFS(Depth First Search): 깊이 우선 탐색 → 재귀/스택으로 구현, 백트래킹 성격의 문제에서 자주 사용2. BFS(Breadth First Search): 너비 우선 탐색 → 큐로 구현, 최단 경로(간선 가중치가 동일할 때) 문제에서 자주 사용 2. 파이썬으로 그래프 입력받기 (Dictionary / defaultdict)파이썬에서는 그래프를 리스트/딕셔너리 등으로 저장할 수 있는데, 인접 리스트 형태로 Dictionary(특히 defaultdict(list))를 쓰면 편하다. 2.1 예시 그래프(방향 그래프)아래는 “u → v” 형태의 방향 그래프를 딕셔너리로 표..