제일 작은 수 제거하기(Javascript)

·2022년 9월 16일
0
post-thumbnail

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

나의 풀이

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

기본적으로 filter() 함수를 이용해서 최소값을 필터한 다음 배열로 돌려줬다. 이 때 전개 연산자(spread operator)을 사용해 줬다. 전개 연산자를 [...array]이런 식으로 사용해 주면 배열을 만들어 주지만 (...)이런 식으로 사용하면 배열의 요소를 하나하나 전개해 준다.

arr = [1, 2, 3, 4]
console.log(...arr); //1 2 3 4
console.log([...arr]); //[1, 2, 3, 4]

Math.min 함수는 인자로 배열이 아닌 숫자 값 하나하나를 받기 때문에 ...를 이용하여 값을 하나하나 전개해 줬다. 그리고 배열의 값이 원래 하나밖에 없었다면, [-1]을, 아니라면 minusMin을 리턴해 줬다.

참고할 풀이

function solution(arr) {
    arr.splice(arr.indexOf(Math.min(...arr)),1);
    if(arr.length<1)return[-1];
    return arr;
}

여기서는 splice() 함수를 사용해 줬다. splice는 배열의 기존 요소를 삭제하거나 교체하거나 새 요소를 추가해 준다. 첫 번째 인수는 시작 인덱스 번호, 두 번째 인수는 몇자리인지를 말하므로 Math.min으로 최소값을 찾은 다음 indexOf로 index를 인출해 시작 번호로 주고, 한 개의 값을 삭제해 준다. 그리고 길이가 1보다 작다면 [-1]을 인출해 준다.

profile
전 이것도 몰라요

0개의 댓글

관련 채용 정보