과일 장수
🍎 문제: 과일 장수
- 각 사과에는 1~k 점수 존재
- m개씩 포장 → 최소 점수 × m = 상자 가격
- 최대 수익 구하기
🧠 핵심 아이디어
- 높은 점수 사과부터 m개씩 포장
- m개 단위로만 상자 구성 가능 → 일부 남는 사과는 버림
🧪 알고리즘
- 점수 오름차순 정렬
- 끝에서 m개씩 묶어 최소값 × m 누적
- 반복
🧱 코드 스니펫 (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; // 총 수익 리턴
}}
'[코딩테스트]' 카테고리의 다른 글
| 파일명 정렬 - 프로그래머스 - java (0) | 2025.05.05 |
|---|---|
| 가장 큰 수 -프로그래머스 - java (0) | 2025.05.05 |
| K번째수 - 프로그래머스 (java) (0) | 2025.05.05 |
| 두 개 뽑아서 더하기 (프로그래머스 Lv1) - java (0) | 2025.05.05 |
| [프로그래머스] 이중우선순위 (0) | 2024.06.07 |