문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답
function solution(array, n) {
// 편차가 동일할 경우 더 작은 수를 반환해야 하므로 오름차순 정렬 후 비교
let arr = array.sort().map(x => Math.abs(x - n));
return array[arr.indexOf(Math.min(...arr))];
}
function solution(array, n) {
let array2 = [];
for (let i = 0; i < array.length; i++) {
// n에서 양수인 요소를 뺀 값을 array2에 추가
if (array[i] >= 0) {
array2.push(n - array[i]);
} else {
// 음수인 요소는 건너뛰기
continue;
}
}
// array3은 모든 수를 양수로 바꾼 새로운 배열
let array3 = array2.map(x => {
if (x < 0) return x * -1;
else return x;
});
// 정답은 n에서 array3의 최솟값을 뺀 값
let answer = n - Math.min(...array3);
// array에 정답이 있다면 그대로 반환
// 만약 없다면 더한 값을 반환 => array[i]가 n보다 큰 경우
if (array.indexOf(answer) >= 0) {
return answer;
} else {
return n + Math.min(...array3);
}
}