Skip to content

Commit f8e60a2

Browse files
committed
courses schedule
1 parent 183e3d2 commit f8e60a2

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

course-schedule/eunhwa99.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import java.util.ArrayList;
2+
import java.util.LinkedList;
3+
import java.util.List;
4+
import java.util.Queue;
5+
6+
class Solution {
7+
8+
// TC: O(numCourses + E) E는 prerequisites 배열의 길이 (즉, 간선의 개수).
9+
// SC: O(numCourses + E)
10+
public boolean canFinish(int numCourses, int[][] prerequisites) {
11+
int[] inDegree = new int[numCourses];
12+
List<List<Integer>> adj = new ArrayList<>();
13+
14+
for (int i = 0; i < numCourses; i++) {
15+
adj.add(new ArrayList<>());
16+
}
17+
18+
for (int[] pre : prerequisites) {
19+
adj.get(pre[1]).add(pre[0]);
20+
inDegree[pre[0]]++;
21+
}
22+
23+
Queue<Integer> queue = new LinkedList<>();
24+
for (int i = 0; i < numCourses; i++) {
25+
if (inDegree[i] == 0) {
26+
queue.add(i);
27+
}
28+
}
29+
for (int i = 0; i < numCourses; i++) {
30+
if (queue.isEmpty()) {
31+
return false;
32+
}
33+
int course = queue.poll();
34+
35+
for (int nextCourse : adj.get(course)) {
36+
inDegree[nextCourse]--;
37+
if (inDegree[nextCourse] == 0) {
38+
queue.add(nextCourse);
39+
}
40+
}
41+
}
42+
return queue.isEmpty();
43+
}
44+
}
45+

0 commit comments

Comments
 (0)