I worked through the [Flowers][1] challenge on hackerrank.com and would like to get feedback on solution and algorithm implementation.  It was suggested by hackerrank to review greedy algorithm to solve this challenge.  As far as i understand this is an implementation of greedy algorithm

> You and your K−1 friends want to buy N flowers. Flower number i has
> cost ci. Unfortunately the seller does not want just one customer to
> buy a lot of flowers, so he tries to change the price of flowers for
> customers who have already bought some flowers. More precisely, if a
> customer has already bought x flowers, he should pay (x+1)∗ci dollars
> to buy flower number i.
> 
> You and your K−1 friends want to buy all N flowers in such a way that
> you spend the least amount of money. You can buy the flowers in any
> order.
> 
> Input:
> 
> The first line of input contains two integers N and K (K≤N). The next
> line contains N space separated positive integers c1,c2,…,cN.
> 
> Output:
> 
> Print the minimum amount of money you (and your friends) have to pay
> in order to buy all N flowers.

    import java.io.*;
    import java.util.*;
    
    public class Flowers {
    
        public static void main(String[] args) {
            /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
            Scanner sc = new Scanner(System.in);
            ArrayList <Integer> flowerPriceList = new ArrayList<Integer>();
            int numFlowers = sc.nextInt();
            int numFriends = sc.nextInt();
            for(int i = 0; i<numFlowers;i++){
                flowerPriceList.add(sc.nextInt());
            }
    		// Sort the ArrayList in reverse order to start bying flowers from most expensive
            Collections.sort(flowerPriceList,Collections.reverseOrder());
            int flowersBought = 0;
            int friendNum = 0;
            int total = 0;
            for(int price:flowerPriceList){
    			//itterate throught all the flower prices and calculate the total
                total +=(flowersBought+1)*price;
                friendNum++;
                if(friendNum == numFriends){
    				//if all friends bought flowers reset the friend counter and restart the cycle
                    friendNum = 0;
                    flowersBought++;
                }
            }
            System.out.println(total);
        }
    }


  [1]: https://www.hackerrank.com/challenges/flowers