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
각 쌍 [a, b]는 과목 b가 과목 a보다 먼저 온다는 뜻입니다
반환값boolean
모든 과정을 완료할 수 있으면 true, 그렇지 않으면 false

제약 조건

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • 각 쌍 [a, b]에 대해 0 ≤ a, b < numCourses입니다.
  • 어떤 쌍도 두 번 나타나지 않습니다.
  • 한 쌍은 같은 과목을 두 번 지정할 수 있습니다. [a, a] 해당 과목은 자기 자신을 선수 과목으로 필요로 하므로 수강할 수 없습니다.

예제

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

후속 질문

각 과목의 선수 과목을 이전 학기에 이수했다면 한 학기에 몇 과목이든 들을 수 있습니다. 모든 과목을 이수하는 데 필요한 최소 학기 수는 몇 학기일까요?

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

테스트 #1

테스트 #2

인자들

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

예상 출력

true