정수 배열 array
와 정수 n이 매개변수로 주어질 때, array
에 들어있는 정수 중 n
과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
1 <= array
<= 100
1 <= array
의 원소 <= 100
1 <= n
<= 100
가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
우선 생각할 점은 n과 배열의 원소의 차가 가장 작은 것을 골라야 하는데 그 차가 음수라고 해서 더 작은 값이 되는 것은 아니다. 단순히 차가 작은 것이 아니라 절댓값이 작아야 한다는 것이다. 하지만 더 어려운 점은 절댓값이 같은 수 중에서는 더 작은 수를 return한다는 점이다.
정리하자면
화살표 함수를 이용한 for문과 비슷한 코드라고 생각하자.
가장 작은 값을 반환한다.
절댓값을 계산해준다.
기존 배열이나 객체의 전체 또는 일부를 다른 배열이나 객체로 빠르게 복사할 수 있다.
function solution(array, n){
let arr = [];
array.forEach((item) => arr.push(Math.abs(item - n)));
const min = Math.min(...arr);
let newArr = [];
for(let i=0; i<arr.length; i++){
if(arr[i] === min){
newArr.push(array[i]);
}
}
return Math.min(...newArr);
}
좋은 풀이 감사합니다 ~