뒤에서 5등 위로

이리·2025년 1월 31일
0

문제 (프로그래머스 181852 : 뒤에서 5등 위로)
181852 : 뒤에서 5등 위로

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

문제파악

  • 주어진 parameter : int형 배열 num_list
  • num_list 중 작은수 5개를 제거한다.
  • 제거된 list를 오름차순으로 정렬하여 return 한다.

접근방법

  • 어차피 오름차순으로 return하기 때문에 미리 정렬을 해두면 작은수 5개를 찾는게 더 편리해진다.
  • 그럼 ArrayList와 int[]간의 변환을 잘 알아야할 것 같다..

코드구현

import java.util.*;

class Solution {
    public int[] solution(int[] num_list) {
        
        ArrayList<Integer> answerList = new ArrayList<>(num_list.length);
        for(int num : num_list){
            answerList.add(num);
        }
        
        // 정렬
        Collections.sort(answerList);
        
        // 작은 요소 5개 제거 
        for(int i = 0 ; i < 5; i++){
            answerList.remove(0);
        }
        
        // 리스트로 변환
        int[] answer = new int[answerList.size()];
        for(int i = 0; i < answerList.size(); i++){
            answer[i] = answerList.get(i);
        }
        
        return answer;
    }
}

배운점

  1. ArrayList.sort( ) 라는건 없다..
  • Collections.sort(arrayList) 를 통해 오름차순 정렬을 할 수 있다.
  • 그렇다면 내림차순은? Collections.sort(arrayList, Comparator.reverseOrder()) 를 통해 내림차순 정렬을 할 수 있다.
  1. int형 배열을 통해 ArrayList를 얻는 방법

다른 방법은 없을까?

https://school.programmers.co.kr/learn/courses/30/lessons/118666/solution_groups?language=java - 이종한님 코드..

나도 문자가 나눠져있어서 case로 처리할수도있겠다는 생각을 했었는데.. 다들 한번씩 봐보길 바란다..
⇒ 극한의 case…

0개의 댓글

관련 채용 정보