프로그래머스 : 뒤에서 5등 위로

Digeut·2024년 4월 14일
0

프로그래머스

목록 보기
157/164

❔문제설명

정수로 이루어진 리스트 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의 배열은 처리할수 없다는거구나!

❌틀린코드2

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;
    }
}

🙄오류2


너무 어거지로 끼워맞춘 코드인가...

그냥 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;
    }
}

진짜 문제 좀 잘 읽자... 코테는 이해만 잘해도 반은 먹고 들어간다...

profile
개발자가 될 거야!

0개의 댓글