[기초 Lv.0] 가까운 수

oaksusu·2024년 1월 21일
0
post-thumbnail

오답노트 9번

1. 문제 (링크) :

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

2. 내가 푼 방법 :

  1. 정수 n을 배열에 추가한 후 오름차순으로 정렬
  2. 정수가 배열의 첫번째와 마지막일때를 조건문으로 먼저 체크함
  3. 정수 n이 위치한 인덱스 앞뒤 숫자와 정수n과의 차이를 비교
function solution(array, n) {
    array.push(n);
    array.sort();
    const idx = array.indexOf(n);
    if (idx === 0) {
        return array[1];
    } else if (idx === array.length - 1) {
        return array[array.length - 2]
    } else if ( n - array[idx - 1] > array[idx + 1] - n) {
        return array[idx + 1];
    } else {
        return array[idx - 1];
    }
}

3. 괜찮아 보였던 풀이 방법 (참고할 만한 풀이):

  1. 배열의 정수들과 정수 n과의 차이의 절대값을 비교해서 정렬
  2. 단!!! 차이의 절대값이 같을수도 있기 때문에 그럴땐 더 작은 숫자가 왼쪽에 오게 정렬해야하므로, || a- b의 조건을 덧붙여줘야함!!
function solution(array, n) {
    array.sort((a,b) => Math.abs(n - a) - Math.abs(n - b) || a - b)
    return array[0]
}
profile
삐약

0개의 댓글