코딩 테스트

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

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

제한 조건
  - arr은 길이 1 이상인 배열입니다.
  - 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

입출력 예
  1) arr = [4,3,2,1], return = [4,3,2]
  2) arr = [10], return = [-1]

 

문제 풀어보기: https://school.programmers.co.kr/learn/courses/30/lessons/12935

 

풀이보기
더보기
function solution(arr) {
    let array = [...arr];
    let min = Math.min(...arr);
    
    if(array.length === 0) return [-1];
    
    for(let i = 0; i < array.length; i++) {
        if(array[i] === min) {
            array.splice(i, 1);
            return array;
        }
    }
}

정말 어이없는 문제였다 .. 분명 빈 배열과 10일 때 -1을 리턴하래서 그렇게 했었는데

알고보니 문제 오류였다 ㅎㅎ ;  그냥 빈 배열일 때만 -1을 리턴하면 된다.

이것 때문에 한참 시간을 버렸다 ㅎ;

 

일단 배열에서 최솟값을 찾아 저장해주고, 빈 배열을 먼저 확인하여 리턴해준다.

빈 배열이 아니라면 배열에서 최솟값과 같은 값을 찾고, splice 메서드를 통해 해당 인덱스를 삭제하고 리턴해주면 끝!