

나의 풀이
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;
}
}
과정
- int형 배열 score를 Integer배열 list로 바꿔주고(int형 배열은 내림차순으로 정렬하려면 함수를 못씀)
- list를 내림차순으로 정렬
- 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;
}
}