seungriyou / algorithm-study

알고리즘 & SQL 문제 풀이 기록
https://leetcode.com/u/summer_y
0 stars 0 forks source link

[LC] 207. Course Schedule #42

Open seungriyou opened 8 months ago

seungriyou commented 8 months ago

https://leetcode.com/problems/course-schedule/

Approach

Idea 1: Topological Sort

위상 정렬을 수행하며 방문한 노드의 개수주어진 numCourses 가 동일한지 판단한다.

동일하다면 주어진 선수과목 순서대로 전체 강의를 수강할 수 있는 것이므로 True를, 아니라면 전체 강의를 수강할 수 없다는 것이므로 False를 반환한다.


Idea 2: DFS w/ 3-state visited 📌

ref:

DFS에서 visited를 사용할 때, 기존에는 0 / 1의 2-state을 사용했었다.

하지만 이번 문제에서는 DFS돌며 가능한 모든 path를 탐색하면서 directed graph의 cycle detection을 수행해야하므로, 3-state 으로 기록해야 한다.


[!important] visited를 3-state으로 기록할 수 있다!

정리: https://seungriyou.github.io/posts/undirected-and-directed-graph-cycle-detection/


Complexity