[프로그래머스] 과일장수

홈런볼·2023년 7월 16일
0

프로그래머스

목록 보기
14/36

문제링크

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

문제접근

입력값 : k(최대점수), m(상자의 사과 갯수), score(사과 점수)

  1. score 정렬
  2. score 배열을 뒤에서 부터 순회하면서 score 배열 길이 m만큼 자름
  3. count로 상자의 갯수만큼 쌓였을 때 (score[i] * m) 을 계산하고 이익을 더해줌
  4. 이익이 발생하지 않는 경우도 있으므로 정렬했을 때 마지막 score가 k 보다 큰 경우 0을 리턴해줌

코드

import java.util.Arrays;

class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        int count = 0;

        Arrays.sort(score);
        for(int i=score.length-1;i>=0;i--){
            count++;
            if(count==m) {
                answer += (score[i] * m);
                count = 0;
            }
            if(k<score[score.length-1]) return 0;
        }
        return answer;
    }
}

정확성 테스트

0개의 댓글