21-02-28 알고리즘 기초강의(2)
마감시간이 있는 스케쥴 짜기
- 마감시간과 함께 여러개의 작업이 주어지고 마감시간 내에 마치면 보상이 주어짐
- 이 보상이 최대가 되는 스케쥴을 작성하는 문제
Greedy Approach로 해결하기
- 보상에 따라서 비오름차순으로 작업을 정렬하고 각 작업을 순서대로 하나씩 가능한 스케쥴에 포함시킴
슈도 코드로 작성해보기
1 | S = ∅ |
- 적절함 의 정의
- 어떤 순서는 그 순서 내의 모든 작업이 데드라인 이전에 시작될 때 적절한 순서라 한다
예) [4,1]은 정렬된 데드라인이라 적절하나 [1,4]는 부적절함 - 어떤 집합은 그 집합의 원소들로 하나 이상의 적절한 순서를 만들 수 있을 때 적절한 집합이라 한다
예) 집합 {1,4}는 [4,1]을 구성할 수 있으므로 적절한 집합임
- 어떤 순서는 그 순서 내의 모든 작업이 데드라인 이전에 시작될 때 적절한 순서라 한다
파이썬으로 구현하기
1 | def schedule (deadline): |