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

sarang_daddy·2022년 12월 2일
0

문제

정수를 저장한 배열, 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. 배열 안에서 min 값을 찾기
  2. min 값을 제거하기
  3. 배열이 비어있다면 [-1] 출력하기
function solution(arr) {
    var answer = [];
    let min = Number.MAX_SAFE_INTEGER; // 최초 큰값으로 min 산정
    let minIndex = 0;
    
    // for 문으로 min 값 찾기 
    for (let i = 0; i<arr.length; i++) {
        if(arr[i] < min) {
            min = arr[i]
            minIndex = i;
        }
    }
    
    // splice() 메서드로 min 값 배열에서 제거하기.
    arr.splice(minIndex,1)
    answer = arr;
    
    // 삼항연산자를 활용해서 배열이 비어있다면 -1
  	// 아니라면 min 제거된 arr 호출
    return answer.length < 1 ? [-1] : arr;
}

추가로 공부 할 것.

다른 사람의 풀이 중 Math 내장객체와 전개연산자 그리고 배열 메서드를 활용하여
훨씬 간결하게 해결한 풀이가 있었다.

  1. for문이 아닌 Math 내장객체와 전개연산자를 이용해서 min 값 찾기
  2. min 값의 인덱스를 indexOf() 메서드로 호출하기
function solution(arr) {
    arr.splice(arr.indexOf(Math.min(...arr)),1);
    if(arr.length<1)return[-1];
    return arr;
}

Math 내장객체를 더욱 활용해보자.
전개연산자 복습하고 활용 방안을 더욱 고민해보자.

profile
한 발자국, 한 걸음 느리더라도 하루하루 발전하는 삶을 살자.

0개의 댓글