Algorithm - 제일 작은 수 제거하기

rachel's blog·2021년 9월 9일
0

Algorithm

목록 보기
2/11
post-thumbnail

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

✔ 처음 풀이

        function solution(arr) {
            var answer = [];
            answer = arr.sort((a, b) => b - a); //내림차순 정렬
            answer.pop(); //가장 끝에 있는 수 = min값 삭제

            if (answer.length === 0) {
                return [-1];
            } else {
                return answer;
            }
        }

=> 이렇게 풀면 무조건 내림차순 정렬이 된다.
☹ 문제 이해를 잘 못한거 같다... 테스트 케이스 추가해서 해보니, 문제에서 원하는 건 배열을 내림차순하라는게 아니라, 배열 전체에서 최소값을 찾아서 그 친구만 빼라는 것!

✔ 다시 풀기 - Math.min(), 스프레드 문법 이용

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

📌 개념 정리

Math.min() 메서드

-전달 받은 인수 중에서 가장 작은 수를 반환한다.
-인수가 전달되지 않을 경우 Infinity를 반환한다.

Math.min(1); //1
Math.min(1, 2); //1
Math.min(1, 2, 3); //1
Math.min(); //Infinity

-배열을 인수로 전달받고, 그 배열 요소 중 최소값을 구하기

  =>Function.prototype.apply메서드 이용 or 스프레드 문법 사용

//배열 요소 중 최소값 취득
Math.min.apply(null, [1, 2, 3]); //1

//ES6 스프레드 문법
Math.min(...[1, 2, 3]); //1

📌 개념 정리

스프레드 문법

-배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 또는 요소 로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장가능하다.

//(1) 함수 호출
myFunction(...Obj);

//(2) 배열 리터럴과 문자열
[...Obj, '4', 'five', 6];

//(3) 객체 리터럴 추가
let objClone = { ...obj };
profile
블로그 이전 : https://rachelslab.tistory.com/

0개의 댓글