import java.util.Arrays;
class Solution {
public int solution(int k, int m, int[] score) {
int answer = 0;
//내림차순 정렬 -> m개씩 빼서 그 값*m을 answer에 더함
for(int i=1;i<score.length;i++){
for(int j=i;j>0 && score[j]>score[j-1];j--){
int temp = score[j-1];
score[j-1]=score[j];
score[j] = temp;
}
}
int index = 0;
while(index+m<=score.length){
answer += score[index + m-1]*m;
index = index+m;
}
return answer;
}
}
로 삽입정렬로 하니 시간복잡도가 n^2이어서 시간초과가 난다. 그래서 Arrays.sort()를 활용해서 시간복잡도를 nlogn으로 해결을 하였다.
int는 reverse가 없어서 Interger형태로 변환 후 시행하였다.
Integer[] integerScore = Arrays.stream(score).boxed().toArray(Integer[]::new);
Arrays.sort(integerScore, Collections.reverseOrder());
굳이 바꾸지 않고 뒤에서부터 체크해서 하면 integerScore를 굳이 다시 만들 필요가 없다.
Arrays.sort(score);
for(int i = score.length; i >= m; i -= m){
answer += score[i - m] * m;
}