programmers

[Programmers Level 0] 가까운수 Javascript

냠냠맨 2022. 11. 25. 14:37

문제정보

 

 

 

정수 배열과 정수 n이 매개변수로 주어집니다.

정수 n과 가장 값이 가까운 수를 return하며 가까운수가 여러개인 경우

더 작은 수를 리턴해야하는 문제입니다.

 

푸니까 10점이나 주네요

기분굿~


 

예시

 

array	          n	    result
[3, 10, 28]	     20	     28
[10, 11, 12]	 13	     12

 

값이 -1 , 0 , 1같이 타이트하게 주어지지 않고

크게 튀도록 주어지는 경우도 있었습니다.


나의풀이

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

처음에 sort를 해주지않고 답을 반환하자 5번케이스에서 오답이 나왔습니다.

왜그런건지 이해가 안되었는데 배열이 오름차순으로 정렬되어있을거라고 멋대로 생각해서 그런거였어요

 

그래서 배열을 오름차순으로 정렬하고

답을 찾아줬습니다.

Math.abs()로 절댓값을 구해주지않으면

음수케이스가 Math.min에 잡혀버려서 Math.abs로 양수로만 요소를 재구성해줬습니다. 


다른사람의 풀이

function solution(array, n) {
    return array.reduce((a,c)=> Math.abs(a-n) < Math.abs(c-n) ? a : Math.abs(a-n) === Math.abs(c-n) ? Math.min(a, c) : c);
}

이..이게머농..

반응형