[Programmers] 가까운 수

그래도 해야지·2023년 5월 15일
0

Programmers

목록 보기
37/40
post-thumbnail

문제 설명
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

🤔 해설

array에서 우선 sort로 정렬을 해준다.

array가 [3, 10, 28], n이 20인 경우
예를들어 Math.abs(20 - 3) - Math.abs(20 - 10)로 하면
n-a와 n-b의 차이를 비교합니다.
결과적으로 절대값이 작은 순서대로 정렬이 된다.
그리고 절대값이 같은 경우엔 a와 b를 원래 순서로 정렬하면 된다.

sort

  • 오름차순
const arr = [2, 1, 3, 10];

arr.sort(function(a, b)  {
  return a - b;
});

// 1,2,3,10
  • 내림차순
const arr = [2, 1, 3, 10];

arr.sort(function(a, b)  {
  return b - a;
});

// 10,3,2,1

✅ 답

function solution(array, n) {
    array.sort((a, b) => Math.abs(n - a) - Math.abs(n - b) || a - b)
    return array[0]
}

0개의 댓글