본문 바로가기
우코딩 코딩테스트 일기/JavaScript 코딩테스트 100일 챌린지 (Lv. 0)

Javascript 알고리즘 100일 챌린지 23번째

by 민우's 코딩 2024. 6. 1.

 

가까운 수

 

https://school.programmers.co.kr/learn/courses/30/lessons/120890

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

function solution(array, n) {
    array.sort((a,b) => a - b);
    let del = Infinity;
    let result = 0;
    for (let i of array) {
        if (Math.abs(n-i) < del) {
            del = Math.abs(n - i);
            result = i;
    }
    }
    return result;
}

 

 

del을 infinity로 지정하여 첫 번째 비교시 무조건 값이 바뀌게 설정하고
모든 배열을 비교할때 - 값을 없애고 수를 나타내기 위해 JS의 Math.abs 를 사용하여 절대값으로 표현


test case 추가

[3, 24, 14, 29], 19를 각각 넣는 경우

24와 14를 비교할때의 값이 같기 때문에
같으면 더 가장 작은 수인 14가 나와야하는데
24가 나오는 경우가 발생하였다.

 

따라서 애초에 작은 수 부터 비교를 하는 방법을 하기 위해

array.sort((a,b) => a - b))를 추가하여 array를 정렬하고 비교를 시작하는 코드 작성.