한 걸음씩

[프로그래머스][JS] 제일 작은 수 제거하기 본문

Programmers

[프로그래머스][JS] 제일 작은 수 제거하기

winter17 2023. 4. 7. 19:21

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

 

프로그래머스

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

programmers.co.kr

풀이 과정1

function solution(arr) {
    if (arr.length >= 2){
        const min = Math.min(...arr)
        arr.splice(arr.indexOf(min), 1)
        return arr
    }else{
        return [-1]
    }
}

배열의 최솟값을 구할 때 주의할 점!

arr = [1, 2, 3]

Math.min(arr) = NaN → 왜 이런 결과를 반환할까? arr이라는 배열을 하나의 인자로 받아들이는데 배열은 타입이 숫자가 아니기 때문에 NaN이라는 결과를 반환하는 것!

Math.min(... arr) = 1 → 그래서 최솟값, 최댓값을 구할 때 배열 자체가 아니라 spread를 통해 찾아야 한다

 

풀이 과정2

function solution(arr) {
    const minIdx = arr.indexOf(Math.min(...arr))
    const array = arr.filter((_, index) => index !== minIdx)
    if (array.length){
        return array
    }else{
        return [-1]
    }
}

배열 속 최솟값 인덱스와 배열을 차례대로 순회하면서 나오는 인덱스를 비교하여 일치하지 않는 경우에만 걸러내서 반환


리뷰

문제가 어려운 건 아니고 사소한 실수이지만 실수가 반복되는 것 같아서 기록으로 남김!