Menu
CoddyTech

Job Sequencing Problem

n개의 작업이 두 배열로 주어집니다. 작업 i는 마감 시간 deadline[i]까지 완료하면 profit[i]의 이익을 얻습니다. 각 작업은 한 단위의 시간이 걸리고, 시간 0부터 한 번에 하나의 작업을 수행하며, 원하는 작업은 건너뛸 수 있습니다. 마감 시간이 2인 작업은 0부터 1까지 또는 1부터 2까지 수행할 수 있습니다.

얻을 수 있는 총이익의 최댓값을 반환하세요.

함수

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
각 작업을 완료해야 하는 시점으로, 1부터 n까지
profitinteger-array
각 작업의 수익; profit[i]는 deadline[i]에 해당합니다
반환값integer
모든 작업이 마감일까지 완료될 수 있을 때의 최대 총이익

제약 조건

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n, 여기서 n은 작업의 개수입니다.
  • 1 ≤ profit[i] ≤ 105
  • 배열은 정렬되어 있지 않습니다. 여러 작업이 동일한 마감일이나 이익을 공유할 수 있습니다.

예제

입력
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
출력
120
설명
마감 시간이 1인 두 작업 중 하나만 수행할 수 있으므로 가치가 50인 작업을 수행하세요. 그러면 가치가 30인 작업은 마감 시간 2에, 가치가 40인 작업은 마감 시간 3에 완료됩니다. 50 + 30 + 40 = 120.
challenge icon

후속 질문

작업 i가 1단위 시간이 아니라 duration[i]단위의 시간을 소요한다면 어떨까요? 가장 수익성이 높은 작업을 먼저 선택하는 것이 여전히 최상의 총합을 얻는 방법일까요?

코드 초기화
def jobSequencing(deadline, profit):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

deadline = [3, 1, 2, 3, 1]
profit = [40, 35, 30, 25, 50]

예상 출력

120