CodingTest/Java로 푼 코딩 테스트

[프로그래머스 / Java] 과일장수

마볼링 2024. 6. 11. 21:30

1. 문제

 

 

2. 생각

문제가 길긴한데 찬찬히 살펴보면

  • 과일장수가 가능한 많은 사과를 팔았을 때 -> 아무리봐도 상자 몇개 제한 이라는 말이 없다 -> 비싼 순 m개씩 짤라서 팔면된다.
  • Ex) 입출력 예시 1
    • 정렬 : 1 1 1 / 2 2 3 3 => 상자 1개 나옴 
    • m = 4 개씩 묶기 : (위에서 3개 = 2)*m = 2 * 4 = 8
  • Ex) 입출력 예시 2
    • 정렬 : 1 1 2 / 2 2 2 / 4 4 4 / 4 4 4 => 상자 4개 나옴 
    • m = 3 개씩 묶기 : (4*m) (4*m) + (2*m) + (1*m) 
    • 계산 : 4*3+ 4*3 + 2*3 + 1*3 = 24+6+3 = 33

-> 음... 정렬하고 m개씩 짜르고... 그 안에서 계산하면 된다...

 

3. 코드

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 - m; i >= 0; i -= m)
            answer += score[i] * m;
        return answer;
    }
}