문제 설명
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
입출력 예
입출력 예 설명
입출력 예 #1
입출력 예 #2
실패한 풀이
function solution(array, n) {
const newArr = []
const result = []
array.map(i => newArr.push(Math.abs(i-n)))
const min = Math.min(...newArr)
for(let i=0; i < newArr.length; i++) {
if(newArr[i] === min) {
return array[i]
}
}
}
❗️실패한 이유 : 제한사항을 고려하지 않았다. 예를들어 [1,1,3]이 배열로 주어지고 n으로 2가 주어졌을 때, result 배열은 [1,3]이 될 수 있고 여기서 최소값을 return해야 하므로 Math.min()을 적용하여 최소값을 return 해야한다.
풀이
function solution(array, n) {
const newArr = []
const result = []
array.map(i => newArr.push(Math.abs(i-n)))
const min = Math.min(...newArr)
for(let i=0; i < newArr.length; i++) {
if(newArr[i] === min) {
result.push(array[i])
}
}
return Math.min(...result)
}
빈 배열을 하나 생성하고, 주어진 배열을 map 메소드를 사용하여 반복하며 값에서 n값을 뺀 값에 절대값을 적용한 새로운 값을 빈 배열에 넣어준다.
새로운 배열을 길이만큼 반복하며 최소값과 동일하다면 result 배열에 넣어주고 최소값을 return 한다.
느낀 점
제한사항을 잘 확인하고 꼼꼼하게 생각하며 놓치는 부분이 없이 풀도록 하자.