Job Sequencing Problem

Problem Link: https://practice.geeksforgeeks.org/problems/job-sequencing-problem-1587115620/1

class Solution:
    
    #Function to find the maximum profit and the number of jobs done.
    def JobScheduling(self,Jobs,n):
        
        # code here
        arr=[]
        for i in Jobs:
            arr.append([i.id,i.deadline,i.profit])
        arr.sort(key=lambda x:-x[2])
        maxdeadline=0
        for i in arr:
            maxdeadline=max(maxdeadline,i[1])
        jobarr=[-1 for i in range(maxdeadline+1)]
        jobarr[0]=0
        maxprofit=0
        c=0
        for i in arr:
            jobid=i[0]
            deadline=i[1]
            profit=i[2]
            for idx in range(deadline,-1,-1):
                if(idx<len(arr)+1 and jobarr[idx]==-1):
                    jobarr[idx]=jobid
                    maxprofit=maxprofit+profit
                    c+=1
                    break
        return [c, maxprofit]

Last updated