정수로 이루어진 리스트 num_list가 주어집니다. num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
num_list를 정렬해서 상위5개의 값만 answer에 담으면 되지 않나?
import java.util.*;
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[5];
Arrays.sort(num_list);
int idx = 0;
for(int i = num_list.length -1 ; i >= 0 ; i--){
answer[idx++] = num_list[i];
}
return answer;
}
}
ArrayIndexOutOfBoundsException
: 또 배열의 범위를 벗어나는 오류가 생겼다... 길이가 5인경우에는 index 5의 값이 없다는건데 내가 지정한 크기 5의 answer보다 짧은 배열을 가진 num_list의 배열은 처리할수 없다는거구나!
import java.util.*;
class Solution {
public int[] solution(int[] num_list) {
//배열의 크기가 5보다 작은경우에 n의 길이 설정
int n = Math.min(5,num_list.length);
int[] answer = new int[n];
Arrays.sort(num_list);
for(int i = 0 ; i < n ; i++){
answer[i] = num_list[num_list.length - 5 + i];
}
return answer;
}
}
너무 어거지로 끼워맞춘 코드인가...
그냥 SQL에서 NTILE인가처럼 상위 5명을 뽑을순없나?
정렬해서 뒤에서 5번째부터 끝까지 잘라내는방식으로 해야하나 ❌❌❌❌
아 문제 잘못 이해했다
상위 5명이 아니고 뒤에서 5등까지를 제외시키는거잖아!!!!!!!
import java.util.*;
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[num_list.length - 5];
Arrays.sort(num_list);
for(int i = 5 ; i < num_list.length ; i++){
answer[i - 5] = num_list[i];
}
return answer;
}
}
진짜 문제 좀 잘 읽자... 코테는 이해만 잘해도 반은 먹고 들어간다...