Skip to content

Commit 68ab792

Browse files
committed
leetcode.com 210. Course Schedule II
문제 링크: https://leetcode.com/problems/course-schedule-ii
1 parent 58c5379 commit 68ab792

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from typing import List
2+
from collections import deque
3+
4+
class Solution:
5+
def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
6+
incoming_edge = [0 for _ in range(numCourses)]
7+
edge = [[] for _ in range(numCourses)]
8+
answer = []
9+
queue = deque()
10+
11+
for to, fr in prerequisites:
12+
edge[fr].append(to)
13+
incoming_edge[to] += 1
14+
15+
for i in range(numCourses):
16+
if incoming_edge[i] == 0:
17+
queue.append(i)
18+
19+
while queue:
20+
fr = queue.popleft()
21+
answer.append(fr)
22+
23+
for to in edge[fr]:
24+
incoming_edge[to] -= 1
25+
if incoming_edge[to] == 0:
26+
queue.append(to)
27+
28+
for i in range(numCourses):
29+
if incoming_edge[i] != 0:
30+
# cycle이 있어서, course를 수강하는게 불가능한 경우
31+
return []
32+
33+
return answer
34+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from unittest import TestCase
2+
from main import Solution
3+
4+
class TestSolution(TestCase):
5+
def test_find_order(self):
6+
sln = Solution()
7+
self.assertEqual([0,1], sln.findOrder(2, [[1,0]]))

0 commit comments

Comments
 (0)