본문 바로가기
Javascript/자바스크립트 문제

[Javascript : programmers] 가까운 수 (Lv.0)

by isfp_yykkng 2024. 8. 20.

[Javascript : programmers] 가까운 수 (Lv.0)

 

문제

 

나의 정답 풀이

function solution(array, n) {
    let diff = array.sort((a,b)=>a-b).map(v=>Math.abs(v-n));
    let min = Math.min(...diff);
    return array[diff.indexOf(min)]
}

 

이 문제는 가까운 수가 여러 개일 경우 더 작은 수를 반환하기 때문에 array 를 오름차순으로 정렬하는 것이 핵심이다.

 

정렬한 배열을 map() 함수로 순회하면서 n 과의 차이 절대값을 diff 라는 배열에 저장하고 n과의 차이 절대값들 중 가장 작은 값이 n과 가장 가까운 값 이고 가장 작은 값을 min이라는 변수에 저장한다.

 

indexOf 함수를 통해서 min 값을 가진 첫 인덱스를 가진 값을 반환한다.

 

다른 사람 풀이

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

 

sort() 함수의 조건을 || (OR) 조건을 통해서 n과의 차이 절대값과 오름차순이라는 두가지로 두었다.

이렇게 정렬한 함수의 첫 값을 반환한다.