[Javascript] 프로그래머스 level1 제일 작은 수 제거하기

daybyday·2021년 1월 6일
0

프로그래머스

목록 보기
3/12
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] 입니다

나의 풀이

function solution(arr) {
    let answer = [];
    if (arr.length<=1) answer.push(-1); // 리턴하려는 배열이 빈 배열인 경우 -1리턴
    arr.map((n, i) => { // (요소, 인덱스)
        for(let j=0;j<arr.length;j++){ // array 길이만큼 반복해서 큰지 작은지 비교
            if(n>arr[j]){ // 모든 배열 요소와 비교해서 '크다'가 한번이라도 true이면
                answer.push(n); // 제일 작은 수가 아니므로 answer에 push
                break;	// 한번 true가 나온 수는 중복 push를 방지하기 위해 break
            }
        }
    });
    return answer;
}

다른 사람의 풀이

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

알게된 점

  • splice() 메소드

    array.splice(시작 인덱스, 제거할 요소의 수, 추가할 요소, ...);

    splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.

    ❗ splice() 메소드는 제거된 요소를 리턴한다. 추가할 요소는 선택사항이다.

  • Math.min()

    Math.min(value1, value2, ...);

    Math.min() 함수는 주어진 숫자들 중 가장 작은 값을 반환합니다.


  • spread 연산자

    ...

spread 연산자는 배열, 문자열, 객체 등 반복 가능한 객체 (Iterable Object)를 개별 요소로 분리해준다.

const arr = [1, 2, 3, 4, 5];

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

0개의 댓글