[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과의 차이 절대값과 오름차순이라는 두가지로 두었다.
이렇게 정렬한 함수의 첫 값을 반환한다.
'Javascript > 자바스크립트 문제' 카테고리의 다른 글
[Javascript : programmers] 콜라츠 수열 만들기 (Lv.0) (0) | 2024.08.26 |
---|---|
[Javascript : programmers] 한 번만 등장한 문자 (Lv.0) (0) | 2024.08.21 |
[Javascript : programmers] A로 B 만들기 (Lv.0) (0) | 2024.08.20 |
[Javascript : programmers] 팩토리얼 (Lv.0) (0) | 2024.08.20 |
[Javascript : programmers] 모스부호 (1) (Lv.0) (0) | 2024.08.20 |