이 문제의 핵심은 크게 아래와 같이 볼 수 있다.
🔗 정수 배열 내림차순 정렬
✅ 문제 풀이
numlist
를 내림차순으로 정렬한다 → n
과의 거리가 같다면 더 큰 수를 앞에 오도록 배치해야하기 때문
- 두 수의 차와 해당 인덱스를 담을
int[][] gap
배열 초기화
- 두 수의 차가 적은 순서대로 오름차순 정렬
- n과 가까운 순서대로 정렬한 배열
int[] answer
배열 초기화
import java.util.Arrays;
import java.util.Comparator;
import java.util.Collections;
class Solution {
public int[] solution(int[] numlist, int n) {
numlist = Arrays.stream(numlist)
.boxed().sorted(Collections.reverseOrder())
.mapToInt(Integer::intValue)
.toArray();
int[][] gap = new int[numlist.length][2];
for(int i = 0; i < numlist.length; i++) {
int k = Math.max(numlist[i], n) - Math.min(numlist[i], n);
gap[i][0] = k;
gap[i][1] = i;
}
Arrays.sort(gap, Comparator.comparing(i -> i[0]));
int[] answer = new int[numlist.length];
for(int i = 0; i < numlist.length; i++) {
int index = gap[i][1];
answer[i] = numlist[index];
}
return answer;
}
}
![](https://velog.velcdn.com/images/p_zane/post/b8a6fe7e-29c1-4747-9968-7597e6dbd6ba/image.png)