(level1) 과일 장

송재호·2025년 8월 13일
0

https://school.programmers.co.kr/learn/courses/30/lessons/135808

사과를 가장 비싸게 팔 수 있는 경우는 최소값이 가장 높은 경우다.
그러므로 배열을 정렬해버리고, 앞에서 혹은 뒤에서 부터 팩사이즈(m)씩 끊어 계산한 뒤 누적하면 정답을 얻을 수 있다.

각 상자는 이미 정렬된 배열을 기반으로 만들어지므로
상자에서 가장 왼쪽에 있는 값이 p가 되고, 이 값만 뽑아서 m과 곱해준 값을 누적하면 된다.

참고로 기본 타입 배열이라서 리버스오더 쓰려면 별도 작업을 해야하므로 그냥 오름차순으로 하는게 낫다.

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 - 1; i>=m - 1; i-=m) {
            answer += score[i - m + 1] * m;
        }
        
        return answer;
    }
}
profile
식지 않는 감자

0개의 댓글