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

KIMYEONGJUN·2026년 7월 27일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

solution 메서드는 입력받은 정수 배열을 복사하여 오름차순으로 정렬한다. 복사본을 만든 이유는 원본 배열의 데이터가 변경되지 않도록 하기 위해서이다.
정렬된 배열에서 가장 작은 5개의 숫자는 처음 5개 인덱스에 배치되므로, 배열 길이에서 5를 뺀 크기로 새로운 결과 배열을 만든다.
그리고 정렬된 배열의 6번째 요소(인덱스 5)부터 끝까지 값을 결과 배열에 복사한다.
main 메서드에서는 예시 배열을 직접 넣어 solution 함수를 호출하고, 결과를 출력하도록 구현했다.
최종적으로 [15, 32, 38, 46, 56]가 출력되어, 요구한 가장 작은 5개 수를 제외한 나머지 값들을 오름차순으로 잘 반환한다.

코드로 구현

import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        int[] sorted = num_list.clone();
        Arrays.sort(sorted);
        int resultLength = sorted.length - 5;
        int[] answer = new int[resultLength];
        for (int i = 0; i < resultLength; i++) {
            answer[i] = sorted[i + 5];
        }

        return answer;
    }
}

프로그래머스 코드

package programmers;

import java.util.Arrays;

// 프로그래머스 뒤에서 5등 위로
public class Main93 {
    public static int[] solution(int[] num_list) {
        int[] sorted = num_list.clone();
        Arrays.sort(sorted);
        int resultLength = sorted.length - 5;
        int[] answer = new int[resultLength];
        for (int i = 0; i < resultLength; i++) {
            answer[i] = sorted[i + 5];
        }
        return answer;
    }

    public static void main(String[] args) {
        int[] num_list = {12, 4, 15, 46, 38, 1, 14, 56, 32, 10};
        int[] result = solution(num_list);
        System.out.println(Arrays.toString(result));
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글