One minute

# Leetcode 2144

2144. Minimum Cost of Buying Candies With Discount

We have to get the items with a maximum discount to get the minimum cost we have to pay.

For example if we have:

`input: cost = [3, 7, 1, 5, 9, 11, 15]`

We know that the maximum discount we can get is `9`

because we can buy two candies with costs `11`

and `15`

.

Now let us sort `cost`

in non-increasing order. Using this, we can get the maximum discounts we can get throughout:

`cost = [15, 11, 9, 7, 5, 3, 1]`

We can start with the first elements `15, 11, 9`

. We can buy candies `15`

and `11`

, and get a discount of `9`

.

Then we have elements `7, 5, 3`

. We can buy elements `7`

, and `5`

to get a discount of `3`

.

Then we have to buy `1`

.

So basically, if we sort `nums`

in non-increasing order and then if an element is the third element, we know it is the discount element.

```
func minimumCost(cost []int) int {
sort.Slice(cost, func(i, j int) bool { return cost[i] > cost[j] })
res := 0
for i := 0; i < len(cost); i++ {
if (i + 1) % 3 == 0 {
continue
}
res += cost[i]
}
return res
}
```