코딩테스트
[Java/프로그래머스] 과일 장수
어코링
2024. 2. 15. 12:33
https://school.programmers.co.kr/learn/courses/30/lessons/135808
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제설명
result
3 4 [1, 2, 3, 1, 2, 3, 1] 8
4 3 [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2] 33
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
다음과 같이 사과 상자를 포장하여 모두 팔면 최대 이익을 낼 수 있습니다.
사과 상자 가격
[1, 1, 2] 1 x 3 = 3
[2, 2, 2] 2 x 3 = 6
[4, 4, 4] 4 x 3 = 12
[4, 4, 4] 4 x 3 = 12
따라서 (1 x 3 x 1) + (2 x 3 x 1) + (4 x 3 x 2) = 33을 return합니다.
2. 문제풀이
import java.util.*;
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
// 주어진 배열을 오름차순으로 정렬
Arrays.sort(score);
// 배열의 뒤에서부터 m개씩 묶어서 판매
for (int i = score.length - m; i >= 0; i -= m) {
// 현재 팔릴 상자의 점수
int boxScore = score[i];
// 현재 팔릴 상자에 들어갈 사과 개수 (m개 또는 남은 사과 개수)
int applesInBox = Math.min(m, score.length - i);
// 현재 팔릴 상자의 이익을 누적
answer += boxScore * applesInBox;
}
// 최종적인 이익을 반환
return answer;
}
}