File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments