[프로그래머스] 가까운 수 - JS

Lenny·2023년 4월 27일

문제

풀이

function solution(array, n) {
    array.sort((a, b) => a-b); // 오름차순으로 정렬
    let min = 0;
    let minIndex = 0;
    let answer = [];

    for (item of array) {
        answer.push(Math.abs(n-item)) // N과 각 배열 요소들의 차이를 answer 배열에 저장 
        min = Math.min(...answer); // answer 배열 중 가장 작은 값을 min 변수에 저장
        minIndex = answer.indexOf(min) // 가장 작은 값(min)의 index를 저장
    } 
    
    return array[minIndex] // 정렬된 원본 배열에서 해당 index를 가진 값을 return
}

오름차순으로 정렬하는 이유는 n-item이 같은 경우도 생기기 때문에

예를들어 N이 13일때
13 - 11 = 2 (절댓값)
13 - 15 = 2 (절댓값)

이런경우가 생긴다.

그래서 처음에 숫자를 오름차순으로 정렬해준것.

indexOf는 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하기 때문에 오름차순으로 정렬하면 차이가 같아도 더 작은 숫자의 인덱스를 찾을 수 있게된다.

profile
🧑‍💻

0개의 댓글