diff --git "a/leetcode3/\354\265\234\353\257\274\354\247\200/857.py" "b/leetcode3/\354\265\234\353\257\274\354\247\200/857.py" new file mode 100644 index 00000000..cae29f84 --- /dev/null +++ "b/leetcode3/\354\265\234\353\257\274\354\247\200/857.py" @@ -0,0 +1,29 @@ +class Solution: + def mincostToHireWorkers(self, quality: list[int], wage: list[int], k: int) -> float: + workers = [] + + for q, w in zip(quality, wage): + workers.append((w / q, q)) + + workers.sort() + + heap = [] + quality_sum = 0 + answer = float('inf') + + for ratio, q in workers: + heapq.heappush(heap, -q) + quality_sum += q + + if len(heap) > k: + largest_q = -heapq.heappop(heap) + quality_sum -= largest_q + + if len(heap) == k: + answer = min( + answer, + quality_sum * ratio + ) + + return answer + \ No newline at end of file