과일 장수

이리·2024년 10월 22일
1
post-thumbnail

문제: https://school.programmers.co.kr/learn/courses/30/lessons/135808?language=java

문제설명

  1. 사과는 1~K점으로 분류된다.
  2. 한 상자에 사과를 m개씩 담아 포장한다.
  3. 사과 상자의 가격은 가장 낮은 점수 p * m이 된다.
  4. 가능한 많은 사과를 팔았을때, 얻을 수 있는 최대 이익을 구하기
  5. 주어진 파라미터: 최대 점수 int k, 한상자당 사과 개수 int m, 사과들의 점수 int[] score

풀이방식

  1. 어차피 과일 상자의 가격은 최소 점수로 계산이 된다. → 작은 수는 작은수끼리 묶기
  2. 개수가 맞아야 판매가 가능하다.
  3. 오름차순으로 정렬하고 나머지 idx 부터 몫 개수만큼 찾아서 가격을 구할수있을것같다!

코드

import java.util.*;
class Solution {
    public int solution(int k, int m, int[] score) {
        
        // 오름차순 정렬 
        Arrays.sort(score);
        
        int len = score.length;
        int rest = len % m ;
        int share = len / m ;
        int sum = 0;
        
        // 나머지부터 m씩 간격으로 기준 가격을 구한뒤 
        // 개수만큼 곱해 가격을 구한다.
        for(int i = rest ; i < len; i = i+m){
            sum += score[i]*m;
        }
        
        return sum;
    }
}

참 쉽쥬잉?

post-custom-banner

0개의 댓글