코딩테스트/프로그래머스

[Lv.0] 뒤에서 5등 위로

민톨이 2024. 7. 18. 11:04
728x90

📋 문제

정수로 이루어진 리스트 num_list가 주어집니다. 
num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 
solution 함수를 완성해주세요.

 

📋 입출력 예시

 

📋 풀이

import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        // 1. num_list를 오름차순으로 정렬
        Arrays.sort(num_list);
        
        // 2. 새로운 배열의 크기는 원래 배열의 크기에서 5를 뺀 크기
        int[] answer = new int[num_list.length - 5];
        
        // 3. 처음 5개의 요소를 제외한 나머지 요소를 새로운 배열에 복사
        for (int i = 5; i < num_list.length; i++) {
            answer[i - 5] = num_list[i];
        }
        
        return answer;
    }
}

 

제일 낮은 5개를 제외하는 거니까 먼저 오름차순을 해주고

 입력값 배열인 num_list의 길이에서 5를 뺀 후 그 값을 반복문을 통해 answer에 담아준다.

 

(num_list.length - 5 잡기가 어려워서 참고좀 했다 ㅠ. 배열과 좀 더 친해질 필요가 있을듯)

 

+남의 풀이

import java.util.Arrays;

class Solution {
    public int[] solution(int[] numList) {
        return Arrays.stream(numList).sorted().skip(5).toArray();
    }
}

 

상당히 간결하다 , , , 알아둬야지