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

Seunghwa's Devlog·2023년 2월 22일
0

Algorithm

목록 보기
4/6
post-thumbnail

문제 설명

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

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ array의 원소 ≤ 100
  • 1 ≤ n ≤ 100
  • 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.

입출력 예

입출력 예 설명

입출력 예 #1

  • 3, 10, 28 중 20과 가장 가까운 수는 28입니다.

입출력 예 #2

  • 10, 11, 12 중 13과 가장 가까운 수는 12입니다.

실패한 풀이


function solution(array, n) {
    const newArr = []
    const result = []
    array.map(i => newArr.push(Math.abs(i-n)))
    const min = Math.min(...newArr)
    
    for(let i=0; i < newArr.length; i++) {
        if(newArr[i] === min) {
            return array[i]
        }
    }
}

❗️실패한 이유 : 제한사항을 고려하지 않았다. 예를들어 [1,1,3]이 배열로 주어지고 n으로 2가 주어졌을 때, result 배열은 [1,3]이 될 수 있고 여기서 최소값을 return해야 하므로 Math.min()을 적용하여 최소값을 return 해야한다.

풀이

function solution(array, n) {
    const newArr = []
    const result = []
    array.map(i => newArr.push(Math.abs(i-n)))
    const min = Math.min(...newArr)
    
    for(let i=0; i < newArr.length; i++) {
        if(newArr[i] === min) {
            result.push(array[i])
        }
    }
    return Math.min(...result)  
}

빈 배열을 하나 생성하고, 주어진 배열을 map 메소드를 사용하여 반복하며 값에서 n값을 뺀 값에 절대값을 적용한 새로운 값을 빈 배열에 넣어준다.
새로운 배열을 길이만큼 반복하며 최소값과 동일하다면 result 배열에 넣어주고 최소값을 return 한다.

느낀 점

제한사항을 잘 확인하고 꼼꼼하게 생각하며 놓치는 부분이 없이 풀도록 하자.

profile
에러와 부딪히고 새로운 것을 배우며 성장해가는 과정을 기록합니다!

0개의 댓글