개발/Leetcode
Leetcode 207. Course Schedule
지산동고라니
2023. 7. 13. 11:54
https://leetcode.com/problems/course-schedule/description/
Course Schedule - LeetCode
Can you solve this real interview question? Course Schedule - There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] indicates that you must take co
leetcode.com
문제
주어지는 정수 numCourses 만큼의 강의가 존재한다. 각 강의는 0번 부터 numCourses -1번 까지 번호가 메겨져있다. prerequisites라는 배열이 함께 주어지는데 이는 prerequisites[i] = [a, b]로 이루어져 있으며 a는 강의 번호 b는 선수강 강의 번호를 의미한다.
예를 들어, [0 , 1]이 주어지면 0번 강의를 듣기위해서는 1번 강의를 들어야 함을 의미한다.
만약 모든 강의를 수강할 수 있다면 True를 그렇지 않다면 False를 반환하라
코드
class Solution:
def canFinish(self, numCourses: int, prerequisites: list[list[int]]) -> bool:
m = [[] for _ in range(numCourses)]
for (c, r) in prerequisites:
m[c] += [r]
def isCycle(c, v):
# print(c, end=" ")
if c in v:
return True
for cc in m[c]:
if isCycle(cc, v + [c]):
return True
return False
for i in range(numCourses):
# print()
if isCycle(i, []):
return False
m[i] = []
return True
이번주 Leetcode 문제들은 모두 DFS로 구성되어 있는듯 하다. 내 스스로가 이렇게 말하면 그렇지만 문제를 풀면 풀 수록 DFS 함수의 짜임새가 날로 좋아지는 것 같아 뿌듯하다.