COCO World

[JavaScript/자바스크립트] 프로그래머스 Lv.1 - 제일 작은 수 제거하기 본문

코딩테스트/프로그래머스

[JavaScript/자바스크립트] 프로그래머스 Lv.1 - 제일 작은 수 제거하기

코코월드주인장 2023. 1. 29. 18:01

🤸‍♀ 문제 설명

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

🤸‍♀ 제한 조건

  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

🤸‍♀ 입출력 예

arr return
[4,3,2,1] [4,3,2]
[10] [-1]

🤸‍♀ 작성 솔루션

function solution(arr) {
    var answer = [];
    
    for (let i = 0; i<arr.length; i++) {
        if (arr.length <= 1) {
            return [-1];
        } else {
            arr.splice(arr.indexOf(Math.min(...arr)),1);
            return arr;
        }
    }
    return answer;
}

 

🤸‍♀ 실패했던 솔루션

function solution(arr) {
    var answer = [];
    
    for (let i = 0; i<arr.length; i++) {
        if (arr.length <= 1) {
            return [-1];
        } else {
            arr.sort((a, b) => b-a);
            arr.pop();
            return arr;
        }
    }
    return answer;
}
function solution(arr) {
    var answer = [];
    
    for (let i = 0; i<arr.length; i++) {
        if (arr.length <= 1) {
            return [-1];
        } else {
            arr.splice(arr.indexOf(Math.min(arr)),1);
            return arr;
        }
    }
    return answer;
}

 

🤸‍♀ TIL

  • ... (threee dots)은 배열 내 파라미터들 값만 추출해서 출력해준다.
  • 또, argument들이 배열로 함수 내부에 전달할때 쓰이거나, 배열 자체를 개별 원소로 쓰일 때 사용된다.
console.log(arr);               // [1, 2, 3]
console.log(...arr);            // 1 2 3
Math.max(1, 2, 3);                      // 3

let arr = [1, 2, 3];
Math.max(arr);                          // NaN
Math.max.apply(null, arr);              // Math.max(1, 2, 3) -> 3
Math.max(...arr);                       // Math.max(1, 2, 3) -> 3


let array1 = new Array(1, 2, 3);        // [1, 2, 3]
let array2 = new Array.apply(arr);      // Uncaught TypeError: Array.apply is not a constructor
let array3 = new Array(...arr);         // [1, 2, 3]