본문 바로가기

컴퓨터/프로그래머스

프로그래머스 - 135808번: 과일 장수 [Java]

문제: https://school.programmers.co.kr/learn/courses/30/lessons/135808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 코드

import java.util.*;
class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        Arrays.sort(score);
        for(int i = score.length - m; i >= 0; i -= m)
            answer += score[i] * m;
        return answer;
    }
}

2. 설명

최대의 이익을 남기기 위해서는 사과 점수가 최대로 높은 것들로만 상자에 담아야합니다.

따라서 score를 정렬을 하면 올림차순이기에 반복문을 통해서 m개 씩 담기는 상자 중 가장 작은 점수를 가진 사과에 접근하여 그 점수 * m을 한 것을 answer에 더해주면 문제는 해결됩니다.

출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges