본문 바로가기
Algorithm

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

by Vintz 2021. 6. 7.
반응형

제일 작은 수 제거하기

문제 설명

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

제한 조건

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

입출력 예

arr return
[4, 3, 2, 1] [4, 3, 2]
[10] [-1]

코드

function solution(arr) {
  if (arr.length <= 1) return [-1];

  const min = Math.min(...arr);
  const index = arr.indexOf(min);

  return arr.splice(index, 1);
}

 

처음엔 매개변수 arr가 숫자로 주어져서 sort() 배열 메서드로 내림차순 정렬 후, pop()으로 마지막 숫자를 제거하려고 했다.

테스트케이스에선 통과 했지만 제출해보니 전부 실패했다. 생각해보니 배열의 순서를 변경하면 안되는 것이었다. 따라서 

  1. 제일 작은 수를 구하고
  2. 제일 작은 수의 인덱스를 구해서
  3. 배열에 해당하는 인덱스를 제거 해주었다.
반응형