[프로그래머스] 가까운 수
카테고리 : 컴퓨터 공학
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 가까운 수 · js 가까운 수
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 가까운 수 · js 가까운 수
문제 설명
정수 배열 array
와 정수 n
이 매개변수로 주어질 때, array
에 들어있는 정수 중 n
과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
array
의 길이 ≤ 100 - 1 ≤
array
의 원소 ≤ 100 - 1 ≤
n
≤ 100 - 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
입출력 예
array | n | result |
---|---|---|
[3, 10, 28] | 20 | 28 |
[10, 11, 12] | 13 | 12 |
입출력 예 설명
입출력 예 #1
- 3, 10, 28 중 20과 가장 가까운 수는 28입니다.
입출력 예 #2
- 10, 11, 12 중 13과 가장 가까운 수는 12입니다.
※ 공지 - 2023년 3월 29일 테스트 케이스가 추가되었습니다. 기존에 제출한 코드가 통과하지 못할 수도 있습니다.
나의 풀이
function solution(array, n) {
var arr = [];
var answer = [];
array.forEach((item) => {
arr.push(Math.abs(item - n));
});
var minNumber = Math.min(...arr);
for (let idx = 0; idx < arr.length; idx++) {
if (arr[idx] === minNumber) {
answer.push(array[idx]);
}
}
return Math.min(...answer);
}
나의 두번째 풀이(Code Refactoring)
function solution(array, n) {
array.sort((a, b) => Math.abs(n - a) - Math.abs(n - b) || a - b);
return array[0];
}
// 1. 배열을 n값을 뺀 순으로 정렬
// 2. 배열의 첫번째 값은 당연히 n과 가장 가까운수가 나온다
참고 할 만한 다른 사람의 코드
function solution(array, n) {
array.sort((a, b) => a - b);
let diff = Infinity;
let ind = Infinity;
for (let i in array) {
let calc = Math.abs(n - array[i]);
if (calc < diff) {
diff = calc;
ind = i;
}
}
return array[ind];
}
// 메모
// Infinity 전역 속성은 무한대를 나타내는 숫자 값입니다.
// Infinity는 전역 객체의 속성입니다. 즉, 전역 범위의 변수입니다.
// Infinity(양의 무한대)는 다른 어떤 수보다 더 큽니다.