문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
사과의 점수의 배열로 m개씩 사과 상자를 포장해서 최대 이익을 계산하는 문제이다.
상자에 담긴 사과 중 가장 낮은 점수(p) * 한 상자 사과 개수(m)이 사과의 가격이다.
최대 이익을 구하려면, 점수가 큰 사과들끼리 상자를 포장하고 그 다음으로 점수가 큰 사과들끼리 상자를 포장하면 최대 이익이라고 생각했다.
1. 사과 점수로 오름차순 정렬을 한다.
2. 사과 점수에서 가장 작다는 것은 사과 묶음 중에서 인덱스가 가장 작은 값이 최소 점수이기 때문에, 최소 점수에 해당하는 인덱스를 score.length - m부터 m을 빼면서 최대 이익을 구한다. (큰 점수로 묶는 상자부터 계산)
3. 최대 이익을 반환한다.
소스코드
import java.util.Arrays;
class Solution {
public int solution(int k, int m, int[] score) {
Arrays.sort(score);
int answer = 0;
for (int i = score.length - m; i >= 0; i -= m) {
answer += (score[i] * m);
}
return answer;
}
}
실행결과

'Problem Solving > Programmers' 카테고리의 다른 글
| [Programmers] 푸드 파이트 대회 - Java (0) | 2025.08.08 |
|---|---|
| [Programmers] 숫자 짝꿍 - Java (0) | 2025.08.07 |
| [Programmers] 기사단원의 무기 - Java (0) | 2025.08.05 |
| [Programmers] 명예의 전당 (1) - Java (0) | 2025.08.04 |
| [Programmers] 문자열 나누기 - Java (2) | 2025.08.03 |