https://school.programmers.co.kr/learn/courses/30/lessons/120880
Comparator를 사용하면 쉽게 문제가 풀린다. compare메소드 안에 diffA와 diffB를 선언해준 후 문제를 풀면 된다. 이 문제를 풀고 나니 Comparator에 대한 감이 잡힌 것 같다.
import java.util.*;
class Solution {
public ArrayList solution(int[] numlist, int n) {
int[] answer = {};
ArrayList<Integer> list = new ArrayList<>();
for(int i=0; i<numlist.length; i++){
list.add(numlist[i]);
}
Collections.sort(list, new Comparator<Integer>(){
@Override
public int compare(Integer a, Integer b){
int diffA = Math.abs(a-n);
int diffB = Math.abs(b-n);
if(diffA == diffB){
//같으면 숫자가 큰 게 우선
return b-a;
}
return diffA - diffB;
}
});
return list;
}
}