
풀이
import collections
class Solution(object):
def canFinish(self, numCourses, prerequisites):
graph = collections.defaultdict(list)
for x, y in prerequisites:
graph[x].append(y)
traced = set()
visited = set()
def dfs(i):
# 순환 구조이면 False
if i in traced:
return False
# 이미 방문했던 노드이면 True
if i in visited:
return True
traced.add(i)
for y in graph[i]:
if not dfs(y):
return False
traced.remove(i)
visited.add(i)
return True
for x in list(graph):
if not dfs(x):
return False
return True
'리트코드' 카테고리의 다른 글
리트코드 787 Cheapest Flights Within K Stops (0) | 2022.10.01 |
---|---|
리트코드 743 Network Delay Time (파이썬) (0) | 2022.10.01 |
리트코드 332 Reconstruct Itinerary (파이썬) (0) | 2022.09.24 |
리트코드 733 Flood Fill (0) | 2022.09.24 |
리트코드 561 배열 파티션Ⅰ(파이썬) (0) | 2022.08.08 |