1833.Maximum Ice Cream Bars
===
###### tags: `Medium`,`Array`,`Greedy`,`Sorting`
[1833. Maximum Ice Cream Bars](https://leetcode.com/problems/maximum-ice-cream-bars/)
### 題目描述
It is a sweltering summer day, and a boy wants to buy some ice cream bars.
At the store, there are `n` ice cream bars. You are given an array `costs` of length `n`, where `costs[i]` is the price of the i^th^ ice cream bar in coins. The boy initially has `coins` coins to spend, and he wants to buy as many ice cream bars as possible.
Return *the **maximum** number of ice cream bars the boy can buy with* `coins` *coins*.
**Note:** The boy can buy the ice cream bars in any order.
### 範例
**Example 1:**
```
Input: costs = [1,3,2,4,1], coins = 7
Output: 4
Explanation: The boy can buy ice cream bars at indices 0,1,2,4 for a total price of 1 + 3 + 2 + 1 = 7.
```
**Example 2:**
```
Input: costs = [10,6,8,7,7,8], coins = 5
Output: 0
Explanation: The boy cannot afford any of the ice cream bars.
```
**Example 3:**
```
Input: costs = [1,6,3,1,2,5], coins = 20
Output: 6
Explanation: The boy can buy all the ice cream bars for a total price of 1 + 6 + 3 + 1 + 2 + 5 = 18.
```
**Constraints**:
* `costs.length` == `n`
* 1 <= `n` <= 10^5^
* 1 <= `costs[i]` <= 10^5^
* 1 <= `coins` <= 10^8^
### 解答
#### Javascript
```javascript=
function maxIceCream(costs, coins) {
costs.sort((a, b) => a - b);
let count = 0;
let sum = 0;
for (const cost of costs) {
if (coins >= sum + cost) {
sum += cost;
count++;
}
}
return count;
}
```
Time: $O(nlogn)$
> 居然這樣也過
> [name=Marsgoat] [time= Jan 6, 2023]
#### Python
```python=
class Solution:
def maxIceCream(self, costs: List[int], coins: int) -> int:
costs.sort()
ans = 0
for cost in costs:
if coins - cost < 0:
break
coins -= cost
ans += 1
return ans
```
發現象牙運算子是一行神器的我:
```python=
class Solution:
def maxIceCream(self, costs: List[int], coins: int) -> int:
return sum(1 for cost in sorted(costs) if (coins := coins - cost) >= 0)
```
> [name=Ron Chen][time= Jan 6, 2023]
>
### Reference
[回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)