정수 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 배열에 넣어 출력