Skip to content

Job Sequence Problem

Implementation

package main

import (
    "fmt"
    "sort"
)

type job struct {
    deadline int
    profit   int
}

func main() {
    res := jobSequence([]job{
        {
            deadline: 2,
            profit:   100,
        },
        {
            deadline: 1,
            profit:   50,
        },
        {
            deadline: 2,
            profit:   10,
        },
        {
            deadline: 1,
            profit:   20,
        },
        {
            deadline: 3,
            profit:   30,
        },
    })
    fmt.Println(res)
}

func jobSequence(jobs []job) int {
    sort.Slice(jobs, func(i, j int) bool {
        if jobs[i].deadline == jobs[j].deadline {
            return jobs[i].profit > jobs[j].profit
        }
        return jobs[i].deadline < jobs[j].deadline
    })
    res := 0
    time := 0
    for _, job := range jobs {
        if time < job.deadline {
            res += job.profit
            time++
        }
    }
    return res
}