코딩테스트 연습
코딩테스트 입문
특이한 정렬
numlist에서 n가 가까운 거리에 있는 순서대로 정렬하여 반환함. 단, 같은 거리에 있다면 크기가 큰 숫자가 먼저 와야함.
0. n과의 차를 Map에 저장함(object에서는 key 값으로 사용할 수 없었던 number와 같은 원시타입도 사용가능하다.).
1. map의 key값으로 내림차순 정렬
2. map의 value값으로 오름차순 정렬
차를 저장하지 않고 sort함수로 차에 따라 numlist를 바로바로 정렬함.
sort()함수는 유니코드 순서에 따라 정렬하기 때문에 [1,2,11,3]가 [1,11,2,3]으로 정렬됨. 숫자 비교는 함수를 사용해야 함.
//a,b 크기 비교
arr.sort(function(a, b) {
if(a > b) return 1;
if(a === b) return 0;
if(a < b) return -1;
});
//key 값 정렬
str.sort((a, b) => a[0] - b[0]).reverse();//[0]는 value
//value 값 정렬
str.sort((a, b) => a[1] - b[1]); // [1]은 key
function solution(numlist, n) {
numlist.sort((a, b) => b - a);
numlist.sort(function (a, b) {
return Math.abs(a - n) - Math.abs(b - n);
});
return numlist;
}
Map과 Object의 차이