이전 포스팅: 과일 장수 (자바)
import java.util.*;
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
Arrays.sort(score);
for(int i=1;i<=score.length/m;i++) {
answer += score[score.length-(m*i)] *m;
}
return answer;
}
}
오름차순으로 정렬 하면 뒤에서부터 m개씩 짤랐을 때, 그 상자의 최소값이 나온다.
그래서 최소값에 m씩 곱해주면 끝.
이전 포스팅을 보니 AraayList
로 변경 후 역순으로 정렬을 수행하여 내림차순으로 정리하였다.
List<Integer> arr = new ArrayList<>();
for (int i : score) {
arr.add(i);
}
//역순 정렬
Collections.sort(arr,Collections.reverseOrder());
하지만 이걸 한 줄로 바꿀 수 있다.
우선Arrays.sort()
로 오른차순으로 정렬한다.
그 뒤 이것을)List
형태로 바꾸어Collections.reverseOrder()
를 수행한다.
(배열이 아닌List
형태이기 때문에Collection.
이 되는 것.Collections.reverseOrder(Arrays.asList(Arrays.sort(score)));
Arrays.sort(score)
는 void를 반환하고
Collections.reverseOrder()
는 역순으로 정렬하는 Comparator를 반환한다.
Collections.reverse()
가 있긴 하지만 void를 반환한다.