728x90

greedy algorithm 2

백준 1092번 : 배 in Python

1092번: 배 www.acmicpc.net 이 문제는 무게 제한이 서로 다른 N개의 크레인이 무게가 서로 다른 M개의 박스를 배에 싣는데 걸리는 최소 시간을 구하는 문제이다. 이를 해결하기 위해서는 되도록이면 각 크레인이 자기 자신의 무게 제한에 최대한 가까운 박스를 옮기도록 해야 한다. 왜냐하면 무게 제한에 가까운 박스부터 먼저 옮겨야 나중에 남은 박스는 무게가 작은 것만 남아 거의 모든 크레인이 옮길 수 있어 시간을 절약할 수 있기 때문이다. 그러므로 주어진 크레인의 무게 제한과 각 박스의 무게를 내림차순으로 정렬한다. 그리고 단위 시간마다 무게 제한이 큰 크레인부터 옮길 박스를 할당하는데, 이때 무게가 무거운 박스부터 살펴보면서 무게 제한보다 작은 박스가 나오면 해당 크레인에 박스를 할당한 뒤 다..

알고리즘 문제 2021.07.13

백준 13904번 : 과제 in Python

13904번: 과제 www.acmicpc.net 이 문제는 각 과제의 점수와 마감 기한이 주어질 때 얻을 수 있는 점수의 최댓값을 구하는 문제이다. 단, 과제는 하루에 하나씩만 끝낼 수 있다. 각 과제는 마감 기한이 다를 뿐이지 각 과제를 해결하는데 걸리는 시간은 모두 하루로 동일하므로 되도록이면 점수가 높은 과제를 해결하는 것이 좋을 것이다. 단, 마감 기한이 짧은 과제도 충분히 고려할 수 있도록 마감 기한이 긴 과제는 되도록 나중에 해결해야 한다. 이를 코드로 구현하기 위해, 우선 min-heap을 만들고 여기에 N개의 input을 넣는데, 만약 마감 기한 d와 점수 w가 주어지면 [-w, -d]를 heap에 넣는다. 즉, 과제의 점수가 큰 순서대로, 만약 점수가 같은 경우에는 과제의 마감 기한이 늦..

알고리즘 문제 2021.07.08
728x90