프로그래머스 C# 과일장수(자바)

2023. 4. 17. 06:15C# 알고리즘 코딩(프로그래머스)

using System;
using System.Linq;

public class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        int index = m-1; // m개씩 나누는데 배열은 0부터 시작하니까 -1해줌.
        Array.Sort(score); // 숫자 크기 순서대로 정렬한 뒤에
        Array.Reverse(score); // 배열을 뒤집어서 가장 높은 숫자가 각 박스의 맨 앞에 오도록 해서


        for(int i = 0; i < score.Length / m; i++)
        {
            answer += score[index] * m; // 숫자가 가장 높은 과일에 곱하기를 해서 점수를 매긴다.
            index += m; // m개씩 나누니까 다음 박스를 계산하게 하기 위해서 플러스m을 해준다.
        }
        
        return answer;
    }
}

 

 

/////

 

 

using System;

public class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        int[] kList = new int[k+1];
        for(int i=0;i<k+1;i++)
        {
            kList[i] = 0;
        }
        for(int i=0;i<score.Length;i++)
        {
            kList[score[i]]++;
        }
        for(int i=k;i>=1;i--)
        {
            while(kList[i] >= m)
            {
                answer += i * m;
                kList[i] -= m;
            }
            kList[i-1] += kList[i];
        }


        return answer;
    }
}

 

 

자바

 

 

import java.util.*;

class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        Arrays.sort(score);

        for(int i = score.length; i >= m; i -= m)
        {
            answer += score[i - m] * m;
        }

        return answer;
    }
}