깊이 우선 탐색 예제 - 3

문제 분석

  • N의 최대 범위가 2,000이므로 알고리즘의 시간 복잡도를 고려할 때 좀 자유롭다.

  • 주어진 모든 노드에 DFS를 수행하고 재귀의 깊이가 5 이상(5개의 노드가 재귀 형태로 연결)이면 1, 아니면 0을 출력한다.

  • DFS의 시간 복잡도는 O(V + E)이므로 최대 4,000, 모든 노드를 진행 했을 때 4,000 * 2,000, 즉 8,000,000 이므로 DFS를 사용해도 제한 시간 내에 문제를 풀 수 있다.

손으로 풀어보기

  1. 그래프 데이터를 인접 리스트로 저장한다.

img_6.png
  1. 모든 노드에서 DFS를 수행한다. 수행할 때 재귀 호출마다 깊이를 더한다. 깊이가 5가 되면 1을 출력하고 프로그램을 종료한다.

img_7.png
  1. 모든 노드를 돌아도 1이 출력되지 않았다면 0을 출력한다.

슈도코드

코드 구현 - 파이썬

코드 구현 - 자바

Last updated