Skip to content

Commit 9b4dd42

Browse files
committed
add Course Schedule solution
1 parent f6e471c commit 9b4dd42

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

course-schedule/HoonDongKang.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* [Problem]: [207] Course Schedule
3+
* (https://leetcode.com/problems/course-schedule/description/)
4+
*/
5+
6+
function canFinish(numCourses: number, prerequisites: number[][]): boolean {
7+
// 시간복잡도 O(n+m)
8+
// 공간복잡도 O(n+m)
9+
function graphFunc(numCourses: number, prerequisites: number[][]): boolean {
10+
const graph: number[][] = Array.from({ length: numCourses }, () => []);
11+
12+
for (const [course, prerequisite] of prerequisites) {
13+
graph[prerequisite].push(course);
14+
}
15+
16+
let traversing = new Array(numCourses).fill(false);
17+
let visited = new Array(numCourses).fill(false);
18+
19+
function dfs(course: number): boolean {
20+
if (traversing[course]) return false;
21+
if (visited[course]) return true;
22+
23+
traversing[course] = true;
24+
for (let pre of graph[course]) {
25+
if (!dfs(pre)) {
26+
return false;
27+
}
28+
}
29+
30+
traversing[course] = false;
31+
visited[course] = true;
32+
return true;
33+
}
34+
35+
for (let i = 0; i < numCourses; i++) {
36+
if (!visited[i] && !dfs(i)) {
37+
return false;
38+
}
39+
}
40+
return true;
41+
}
42+
}

0 commit comments

Comments
 (0)