깊이 우선 탐색 예제 - 1
문제 분석
노드의 최대 개수가 1,000이므로 시간 복잡도
N^2이하의 알고리즘을 모두 사용할 수 있다.연결 요소는 에지로 연결된 노드의 집합이며, 한 번의 DFS가 끝날 때까지 탐색한 모든 노드의 집합을 하나의 연결 요소로 판단할 수 있다.
손으로 풀어보기
그래프를 인접 리스트로 저장하고 방문 리스트도 초기화한다. 방향이 없는 그래프이기 때문에 양쪽 방향으로 에지를 모두 저장한다.

임의의 시작점에서 DFS를 수행한다.

아직 방문하지 않은 노드가 있으면 시작점을 다시 정해 탐색을 진행한다. 모든 노드를 방문하면 전체 탐색을 종료한다.
DFS 수행 횟수가 정답이 된다.
슈도코드
코드 구현 - 파이썬
sys.setrecursionlimit(10000): 재귀함수의 최대 깊이를 10,000으로 설정한다.파이썬에서 기본 설정이 1,000 정도이다.
DFS나 재귀관련 문제를 풀 때 해당 제한으로 예외가 발생하는 경우가 있다.
코드 구현 - 자바
Last updated