본문 바로가기
Algorithm

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

by Baest 2021. 11. 11.

[링크]

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

 

코딩테스트 연습 - 제일 작은 수 제거하기

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

programmers.co.kr

 

 

[문제설명 및 입출력 예]

 

[내가 제출한 코드 및 풀이]

💯 if-else 사용한 코드

 

function solution(arr) {
    let lowNum = [];     
    /* 가장 작은 수 찾음*/
    for(let i=0; i<arr.length; i++) { // arr의 길이만큼 반복     
        if(i === 0){                  // i가 0이면  
            lowNum.push(arr[i]);      // lowNum에 0번째 값 넣음 (일단 0번째 인덱스 값을 넣어두고 다음에 비교)     
        } else {                      // i가 0이 아니고
            if(lowNum[0] > arr[i]) {  // lowNum[0]번째 값이 arr[i]의 값보다 크면
                lowNum[0] = arr[i];   // arr[i]이 더 작은수이므로 lowNum[0]번째 값은 arr[i]의 값으로 교체  
            }
        }
    }
    /* 가장 작은 수 제거*/
    for(let j=0; j<arr.length; j++) { // arr의 길이만큼 반복
        if(arr[j] === lowNum[0]) {    // lowNum[0]와 같은 값이 있으면 
            arr.splice(j,1);          // 배열의 j번째에 있는 1개 제거  
        }
    }    
    /* 배열 길이 체크*/
    if(arr.length === 0){             // 배열에 값이 없을 경우  
        arr.push(-1)                  // -1 출력 
        return arr;
    }else {                           // 배열에 값이 있을 경우  
        return arr;                   // arr의 값 출력 
    }  
}

 

 

 

 

 

[다른 사람의 코드]

💡 Math.min 을 사용한 코드

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

 

💡 reduce, filter와 화살표 함수을 사용한 코드

function solution(arr) {
  if (arr.length <= 1) return [-1];
  let min;
  arr.reduce((acc, cur) => min = cur > acc ? acc : cur);
  return arr.filter(e => e !== min);
}