(Java)프로그래머스 - 과일 장수

윤준혁·2024년 2월 28일

나의 풀이

import java.util.*;

class Solution {
    public int solution(int k, int m, int[] score) {
        int answer = 0;
        
        Integer[] list = Arrays.stream(score).boxed().toArray(Integer[]::new); // 1       
        Arrays.sort(list, Collections.reverseOrder()); // 2
        
        for (int i = 0; i < list.length; i++) {
            if ((i + 1) % m == 0) answer += list[i] * m; // 3
        }
        
        return answer;
    }
}

과정

  1. int형 배열 score를 Integer배열 list로 바꿔주고(int형 배열은 내림차순으로 정렬하려면 함수를 못씀)
  2. list를 내림차순으로 정렬
  3. i + 1이 한 상자에 들어가는 사과의 수 m개가 될 때 마다 answer에 list[i]에 m을 더해준다(내림차순으로 정렬했으니 m개가 될 때 마지막에 연산된 list[i]는 m개 중의 최소값)

다른 사람 풀이

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; i >= m; i -= m){
            answer += score[i - m] * m;
        }

        return answer;
    }
}

0개의 댓글