특이한 정렬 [CT]

성배·2025년 1월 30일
0

코딩테스트

목록 보기
39/53

정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.

생각한 풀이
1. 입력받은 값과의 차중 가장 작은 값을 구하고 해당 수를 담아둔다
2. 차가 중복된다면 두 수중 큰값을 먼저 정렬한다


import java.util.*;
class Solution {
    public int[] solution(int[] numlist, int n) {
        List<Integer> list = new ArrayList<>();
        for(int num :numlist){
            list.add(num);
        }
        
        list.sort((a,b)->{
            int ma = Math.abs(a-n);
            int mb = Math.abs(b-n);
            if(ma==mb){
                return b-a;
            }
            return ma-mb;
        });
        
        int arr[]=new int[list.size()];
        for(int i=0;i<list.size();i++){
            arr[i]=list.get(i);
        }
        
        return arr;
    }
}

🐴 풀이
1. 동적할당으로 List 생성
2. numlist 있는 값을 list에 추가
3. list.sort(a,b)를 이용해 정렬 방식 생성
4. n과 차이의 절댓값을 ma,mb에 저장하고, ma,mb가 같은 값이라면 더 큰 값을 리턴
5. ma와 mb 중 더 작은 차이의 값을 리턴
6. list를 arr 배열에 넣어 출력

0개의 댓글