Maximum Ice Cream Bars

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class Solution:
    def maxIceCream(self, costs: List[int], coins: int) -> int:
        # Step 1: Counting
        count = [0] * (max(costs) + 1)
        for cost in costs:
            count[cost] += 1

        # Step 2: Buying Ice Cream Bars
        ice_creams = 0
        for i, c in enumerate(count):
            if coins >= i * c:
                coins -= i * c
                ice_creams += c
            else:
                ice_creams += coins // i
                break

        return ice_creams