본문 바로가기

■ 프로그래밍/프로그래머스

[자바스크립트/Lv1] 제일 작은 수 제거하기

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

 

 

[ 문제 ]

더보기

문제 설명

정수를 저장한 배열, 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]

 

[ 풀이 ]

2020.06.21

function solution(arr) {
    var min = arr[0];
    let index;
    let removed;
    
    if (arr.length === 1 || arr.length === 0) {
        return [-1]
    } else {
        for (let a in arr) {
            if (arr[a] <= min) {
                min = arr[a]
                index = a;         
            }
        }
        removed = arr.splice(index, 1);
        return arr;
    }
}

가장 작은 숫자를 없애고 return해야 하는 문제였다. 

처음에는 arr.sort().reverse()하고 마지막 숫자를 제외하고 return했는데, return은 arr 순서 그대로 해야했기 때문에 통과가 되지 않았다. 

 

따라서 min이라는 변수에 우선 arr의 첫번째 요소를 넣어 대조했으며, 가장 작은 숫자를 min으로 저장하고, 해당 index를 저장했다. 

그리고 splice()로 arr에서 가장 작은 숫자를 제외한 arr를 return했다.