Skip to content

Commit aa37bc9

Browse files
authored
[ PS ] : Course Schedule
1 parent df07170 commit aa37bc9

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

β€Žcourse-schedule/uraflower.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* @param {number} numCourses
3+
* @param {number[][]} prerequisites
4+
* @return {boolean}
5+
*/
6+
const canFinish = function (numCourses, prerequisites) {
7+
// κ°•μ˜ κ°„ 관계 κ·Έλž˜ν”„ 생성
8+
const relation = Array.from({ length: numCourses }).map(() => new Set());
9+
for (const [current, prev] of prerequisites) {
10+
relation[current].add(prev);
11+
}
12+
13+
const visiting = new Set(); // μˆ˜κ°•ν•  수 μžˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ μˆœνšŒμ€‘μΈ κ°•μ˜
14+
const visited = new Set(); // μˆ˜κ°• κ°€λŠ₯ν•œ κ°•μ˜
15+
16+
function dfs(current) {
17+
if (visiting.has(current)) {
18+
return false;
19+
}
20+
if (visited.has(current)) {
21+
return true;
22+
}
23+
visiting.add(current);
24+
25+
for (const prev of relation[current]) {
26+
if (visiting[prev] || !dfs(prev)) {
27+
return false;
28+
}
29+
}
30+
31+
visiting.delete(current);
32+
visited.add(current)
33+
34+
return true;
35+
}
36+
37+
// κ°•μ˜λ§ˆλ‹€ 순회
38+
for (let i = 0; i < numCourses; i++) {
39+
if (!visited[i] && !dfs(i)) {
40+
return false;
41+
}
42+
}
43+
44+
return true;
45+
};

0 commit comments

Comments
Β (0)