File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ from typing import List
2
+
3
+
4
+ class Solution :
5
+ def canFinish (self , numCourses : int , prerequisites : List [List [int ]]) -> bool :
6
+ """
7
+ - Idea: ๊ฐ ๊ณผ๋ชฉ์ ์ ํ ๊ณผ๋ชฉ์ ์ฌ์ดํด์ด ์กด์ฌํ๋์ง DFS๋ก ํ์ํ๋ค.
8
+ ํ๋๋ผ๋ ์ฌ์ดํด์ด ์กด์ฌํ๋ค๋ฉด, ๋ชจ๋ ๊ณผ๋ชฉ์ ์๊ฐํ ์ ์๋ค๋ ์๋ฏธ๋ค.
9
+ - Time Complexity: O(v + e). v์ e๋ ๊ฐ๊ฐ ๊ณผ๋ชฉ์ ์, e๋ ์ ํ ๊ด๊ณ(๊ณผ๋ชฉ => ์ ํ ๊ณผ๋ชฉ)์ ์๋ค.
10
+ ๋ชจ๋ ๊ณผ๋ชฉ๊ณผ ๊ทธ ๊ณผ๋ชฉ์ ์ ํ ๊ณผ๋ชฉ์ ํ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ ๋
ธ๋์ ์ฃ์ง์ ๋ํด ํ๋ฒ์ฉ ๋ฐฉ๋ฌธํด์ผ ํ๋ค.
11
+ - Space Complexity: O(v). v๋ ๊ณผ๋ชฉ์ ์๋ค.
12
+ ๊ฐ ๊ณผ๋ชฉ์ ๋ํด์ ๊ทธ๋ํ(์ ํ ๊ด๊ณ)๋ฅผ ์ ์ฅํ๊ณ , ์ฌ๊ท ํธ์ถ ์คํ์ ์ํด ๊ณต๊ฐ์ด ์ฌ์ฉ๋๋ค.
13
+ """
14
+
15
+ graph = {i : [] for i in range (numCourses )}
16
+
17
+ for course , prerequisite in prerequisites :
18
+ graph [course ].append (prerequisite )
19
+
20
+ visited = set ()
21
+
22
+ def DFS (course ):
23
+ if course in visited :
24
+ return False
25
+ if graph [course ] == []:
26
+ return True
27
+
28
+ visited .add (course )
29
+ for prerequisite in graph [course ]:
30
+ if not DFS (prerequisite ):
31
+ return False
32
+
33
+ visited .remove (course )
34
+ graph [course ] = []
35
+
36
+ return True
37
+
38
+ for course in range (numCourses ):
39
+ if not DFS (course ):
40
+ return False
41
+
42
+ return True
You canโt perform that action at this time.
0 commit comments