본문 바로가기

Coding Test/Programmers

[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 65 - 가까운 수)

728x90
# 문제

정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.



# 답안

// 1. 입력: array -> 정수 배열 [1,2,3] 같은거, n -> 정수 1,2,3 같은거
// 2. 출력: n과 가장 가까운 수 

// let closest 초기값을 array[0]으로 설정
// i를 1부터 반복문 돌리면서 Math.abs(n-array[i])과 Math.abs(n-array[0])를 비교
// 만약에 새로운게 더 작으면, 그걸로 업데이트 
// 절대값이 같으면 Math.min()을 통해 비교


function solution(array, n) {
  let closest = array[0];
  for (let i = 1; i < array.length; i++) {
    if (Math.abs(n - array[i]) < Math.abs(n - closest)) {
      closest = array[i];
    } else if (Math.abs(n - array[i]) === Math.abs(n - closest)) {
      closest = Math.min(array[i], closest);
    }
  }
  return closest;
}



# 인사이트

// Math.abs() 함수는 주어진 숫자의 절대값을 반환하는 자바스크립트의 내장 함수

// Math.min()은 주어진 숫자들 중에서 가장 작은 값을 반환하는 자바스크립트의 내장 함수
// 이 함수는 숫자들을 매개변수로 받아들여 그 중 가장 작은 값을 반환
// Math.min() 함수는 배열을 인수로 받지 않는다.
// 따라서 배열을 사용할 경우 아래와 같이 전개 연산자(...)를 사용하여 배열의 각 요소를 개별적인 인수로 전달해야함
// const numbers = [4, 2, 7, 1];
// console.log(Math.min(...numbers));

 

728x90