[코딩테스트]

과일 장수 - 프로그래머스 - java

everydeveloper 2025. 5. 5. 18:25

과일 장수

🍎 문제: 과일 장수

  • 각 사과에는 1~k 점수 존재
  • m개씩 포장 → 최소 점수 × m = 상자 가격
  • 최대 수익 구하기

🧠 핵심 아이디어

  • 높은 점수 사과부터 m개씩 포장
  • m개 단위로만 상자 구성 가능 → 일부 남는 사과는 버림

🧪 알고리즘

  1. 점수 오름차순 정렬
  2. 끝에서 m개씩 묶어 최소값 × m 누적
  3. 반복

🧱 코드 스니펫 (Java)

Arrays.sort(score);
for (int i = score.length - m; i >= 0; i -= m) {
    total += score[i] * m;
}

import java.util.*;

class Solution {
public int solution(int k, int m, int[] score) {
// 1. 점수를 오름차순 정렬
Arrays.sort(score);

    int total = 0;

    // 2. 뒤에서부터 m개씩 묶어서 가격 계산
    for (int i = score.length - m; i >= 0; i -= m) {
        int min = score[i]; // 해당 묶음의 최솟값 (가장 마지막 위치)
        total += min * m;   // 상자 가격 = 최솟값 × 개수
    }

    return total; // 총 수익 리턴
}

}