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