[코딩문제] Level1 제일 작은 수 제거하기

Hong Un Taek·2021년 7월 9일
0

코딩테스트

목록 보기
2/3

프로그래머스 level1

제일 작은 수 제거하기


문제 설명

정수를 저장한 배열, 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) {
    if(arr.length === 1){
        return [-1];
    }
    
    let smallNum = arr[0];
    arr.forEach(num=>{
        if(smallNum > num){
               smallNum = num;
        }
    });
    let smallIndex = arr.indexOf(smallNum);
    arr.splice(smallIndex, 1);
    return arr;
}

테스트케이스 실행결과 답이 맞지만 코드가 복잡하다.

다른 사람의 풀이

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

너무 깔끔하다.
Math의 min함수는 숫자 집합중에서 가장 작은 수를 리턴하는 함수
매개변수로 기존arr배열에 전개구문을 사용하여
가장 작은 숫자를 가져오고 indexOf를 통해 가장 작은 수의 index를 가져온다.
마지막으로 splice를 통해 (파라미터로 위과정을 통해 가져온 가장 작은수)
해당 요소를 제거한다.

profile
cherrycock's Velog

0개의 댓글

관련 채용 정보