프로그래머스 (JS)/Lv. 1

[Programmers / JS] 12935번 - 제일 작은 수 제거하기

hodo- 2023. 3. 14. 15:19

Problem

문제 보기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.


Solution

function solution(arr) {
    let answer = arr.filter(x => x !== Math.min(...arr));
    return answer.length === 0 ? [-1] : answer;
}

제출을 누르는 순간 테스트 1번이 너무 오래 걸려서 어..?했는데 통과하긴 했다

근데..

이렇게 오래 걸리는 게 맞나..?
흠..매번 filter할 때마다 Math.min을 찾아서 그런 거 같다
다시 코드를 작성해서 배열 중 가장 작은 수를 새 변수에 저장해주고 그 다음에 삼항 연산자에서 filter를 이용하는 걸로 수정했더니 시간이 단축되었다!

function solution(arr) {
    const min = Math.min(...arr);
    return arr.length === 1 ? [-1] : arr.filter(x => x !== min)
}