너비 우선 탐색 예제 - 1

문제 분석

  • DFSBFS를 구현할 수 있는지 물어보는 기본 문제다.

  • 노드 번호가 작은 것을 먼저 방문해야 하는 것에 주의해야 한다.

손으로 풀어보기

  1. 인접 리스트에 그래프 저장

  2. DFS를 실행하면서 방문 리스트 체크와 탐색 노드 기록을 수행한다. 문제 조건에서 작은 번호의 노드부터 탐색한다고 했으므로 인접 노드를 오름차순으로 정렬한 후 재귀 함수를 호출한다.

  3. BFS도 같은 방식으로 노드를 오름차순으로 정렬하여 큐에 삽입하고 진행한다.

  4. DFS와 BFS를 탐색하며 기록한 데이터를 출력한다.

슈도코드

n(노드 개수) m(에지 개수) v(시작점)
A(그래프 데이터 저장 인접 리스트)

for m 반복:
    A 인접 리스트에 그래프 데이터 저장
    
for n+1 반복:
    각 노드와 관련된 에지 정렬
    
dfs:
    현재 노드 출력
    visit 방문 처리
    현재 노드의 연결 노드 중 방문하지 않은 노드로 dfs 실행

visit 리스트 초기화
dfs(v) 실행

bfs:
    큐 자료구조에 시작 노드 삽입
    visit 방문 처리
    while 큐가 비어 있을 때까지:
        큐에서 노드 데이터 가져오기
        가져온 노드 출력
        현재 노드의 연결 노드 중 방문하지 않은 노드로 큐에 삽입하고 방문 처리

visit 리스트 초기화
bfs(v) 실행

코드 구현 - 파이썬

코드 구현 - 자바

Last updated