-
[프로그래머스/JAVA] 과일 장수Algorithm/Java 2025. 2. 3. 09:51
https://school.programmers.co.kr/learn/courses/30/lessons/135808
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 문제 요약
과일 장수가 사과를 m개씩 한 상자로 포장하여 판매할 때, 사과의 점수가 가장 낮은 점수를 기준으로 가격이 결정됩니다.
가능한 많은 사과를 판매하여 최대 이익을 구하는 문제입니다.
[ 정답 코드 & 풀이 ]
📌 풀이- 사과 점수 정렬
사과의 점수를 오름차순으로 정렬합니다. (낮은 점수부터 높은 점수 순) - 한 상자씩 포장
뒤에서 m개씩 그룹을 만들어 한 상자로 포장합니다.
(이유: 낮은 점수를 기준으로 판매해야 하기 때문에, 높은 점수부터 m개씩 묶어 계산) - 최소 점수 기준으로 가격 계산
한 상자에서 가장 낮은 점수 × m을 누적하여 최대 이익을 계산합니다.
📌 정답 코드
import java.util.*; class Solution { public int solution(int k, int m, int[] score) { // 입출력 예 #1 // k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1] 일때, // 1. [1, 1, 1, 2, 2, 3, 3]로 정렬 // 2. [2, 2, 3, 3]로 자르고 해당 이익 계산 // 인덱스 (score.length - m) ~ (score.length - 1) 까지 // score[score.length - m] * m = 8 // ==> 총이익 = 8 // 입출력 예 #2 // k = 4, m = 3, 사과 7개의 점수가 [4, 1, 2, 2, 4, 4, 4, 4, 1, 2, 4, 2]일때, // 1. [1,1,2,2,2,2,4,4,4,4,4,4]로 정렬 // 2. [4,4,4]로 자르고 이익 계산 + // [4,4,4]로 자르고 이익 계산 + // [2,2,2]로 자르고 이익 계산 + // [1,1,2]로 자르고 이익 계산 + // ==> 총이익 = 33 Arrays.sort(score); // [1, 1, 1, 2, 2, 3, 3] int answer = 0; for(int i = score.length - m; i >= 0; i-= m) { answer += score[i] * m; } return answer; } }
반응형'Algorithm > Java' 카테고리의 다른 글
[프로그래머스/JAVA] 소수 만들기 (0) 2025.02.06 [프로그래머스/JAVA] 소수 찾기 (0) 2025.02.03 [프로그래머스/JAVA] 튜플 (2019 카카오 개발자 겨울 인턴십 문제) (1) 2025.01.28 [프로그래머스/JAVA] [1차] 캐시 (2018 KAKAO BLIND RECRUITMENT 문제) (1) 2025.01.27 [프로그래머스/JAVA] 2016년 (1) 2025.01.27 - 사과 점수 정렬