Menu
CoddyTech

Course Schedule

numCourses개의 강의가 있으며, 번호는 0부터 numCourses-1까지입니다. prerequisites에 있는 각 쌍 [a, b]는 강의 a를 시작하기 전에 강의 b를 끝내야 한다는 뜻입니다. 모든 강의를 끝낼 수 있는 순서가 있으면 true를 반환하고, 그런 순서가 없으면 false를 반환하세요.

함수

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
강의 수
prerequisitesinteger-2d-array
각각 과목 b가 과목 a보다 먼저 와야 함을 의미하는 [a, b] 쌍
반환값boolean
모든 과정을 마칠 수 있으면 true, 그렇지 않으면 false

제약 조건

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • 각 쌍 [a, b]에서 0 ≤ a, b < numCourses입니다.
  • 어떤 쌍도 두 번 나타나지 않습니다.
  • A 쌍에 같은 과목이 두 번 나타날 수 있습니다. [a, a] 이 과목은 자신을 먼저 들어야 하므로 절대 수강할 수 없습니다.

예제

입력
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
출력
true
설명
과목 0에는 선수 과목이 없으므로 가장 먼저 수강합니다. 그러면 과목 1을 수강할 수 있고, 과목 1을 수강하면 과목 2와 3을 모두 수강할 수 있으므로 0, 1, 2, 3 순서가 가능합니다.

lock icon제출 시 숨은 테스트 +20개

challenge icon

후속 질문

각 과목의 선수 과목을 이전 학기에 이수했다면, 한 학기에 몇 개의 과목이든 수강할 수 있습니다. 모든 과목을 이수하는 데 필요한 최소 학기 수는 몇 학기인가요?

코드 초기화
def canFinish(numCourses, prerequisites):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

입력

numCourses = 4
prerequisites = [[1, 0], [2, 1], [3, 1]]

기대값

true