[Level1] 제일 작은 수 제거하기

JMinkyoung·2021년 4월 15일
0

Programmers

목록 보기
18/32

문제

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

제한 조건

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


    입출력 예
arrreturn
[4,3,2,1][4,3,2]
[10][-1]

문제 풀이

배열의 길이가 1인 경우는 기저사례로 처리하여 answer 배열에 -1을 넣고 return 해주었고, 나머지 경우에는 배열 내의 최솟값을 구해서 min 변수에 넣고 배열.splice(배열.indexOf(min),1) 을 이용하여 해당 값만 배열에서 제거 후 answer 배열로 배열을 복사했다.

나는 최솟값을 구할 때 무식한 방법으로 배열을 전부 돌면서 값을 비교하여 가장 작은 값을 구했는데 다른 풀이를 보니 JavaScript 에서 제공하는 Math.min() 을 이용하여 구할 수 있었다.

정답 코드 (내 풀이)

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

정답 코드 (다른 풀이)

function solution(arr) {
    let answer = [];
    let min = Math.min.apply(null,arr);    
    if(arr.length === 1){
        answer.push(-1);
    }else{
        arr.splice(arr.indexOf(min),1);
        answer = arr.slice();
    }
    return answer;
}
profile
Frontend Developer

0개의 댓글