Skip to content

Commit 43effe9

Browse files
committed
course schedule solution
1 parent 0ec235a commit 43effe9

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

course-schedule/hyer0705.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
function canFinish(numCourses: number, prerequisites: number[][]): boolean {
2+
const graph: number[][] = Array.from({ length: numCourses }, () => []);
3+
const inDegree: number[] = Array(numCourses).fill(0);
4+
5+
for (const [course, prerequisite] of prerequisites) {
6+
graph[prerequisite].push(course);
7+
inDegree[course]++;
8+
}
9+
10+
// 지금 당장 수강할 수 있는 과목 목록
11+
const queue: number[] = [];
12+
13+
for (let i = 0; i < numCourses; i++) {
14+
if (inDegree[i] === 0) {
15+
queue.push(i);
16+
}
17+
}
18+
19+
const result: number[] = [];
20+
while (queue.length > 0) {
21+
const course = queue.shift()!;
22+
result.push(course);
23+
24+
for (const nextCourse of graph[course]) {
25+
inDegree[nextCourse]--;
26+
if (inDegree[nextCourse] === 0) {
27+
queue.push(nextCourse);
28+
}
29+
}
30+
}
31+
32+
if (result.length !== numCourses) return false;
33+
return true;
34+
}

0 commit comments

Comments
 (0)