From 119dc4617df407d12f9be28857ac491fa097e465 Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Sun, 15 Dec 2024 20:18:49 +0900 Subject: [PATCH] https://leetcode.com/problems/maximum-average-pass-ratio --- medium/maximum_average_pass_ratio.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 medium/maximum_average_pass_ratio.py diff --git a/medium/maximum_average_pass_ratio.py b/medium/maximum_average_pass_ratio.py new file mode 100644 index 0000000..4877e66 --- /dev/null +++ b/medium/maximum_average_pass_ratio.py @@ -0,0 +1,26 @@ +# https://leetcode.com/problems/maximum-average-pass-ratio + +from typing import List +from queue import PriorityQueue + +class Solution: + def maxAverageRatio(self, classes: List[List[int]], extraStudents: int) -> float: + def to_priority(clas): + return -abs((clas[0] / clas[1]) - ((clas[0] + 1) / (clas[1] + 1))) + + q = PriorityQueue() + for i in range(len(classes)): + v = to_priority(classes[i]) + q.put((v, i)) + for i in range(extraStudents): + (_, index) = q.get() + classes[index][0] += 1 + classes[index][1] += 1 + q.put((to_priority(classes[index]), index)) + result = 0 + for i in range(len(classes)): + result += (classes[i][0] / classes[i][1]) + return result / len(classes) + + +