[알고리즘] 제일 작은 수 제거하기

nana·2022년 11월 22일
0

알고리즘

목록 보기
3/14

문제설명

정수를 저장한 배열, 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) {
  let small = 0;

  if (arr.length === 1) return [-1];

  // arr.sort((a,b) => b - a).slice(0, arr.length - 1)
  // console.log(arr)

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < arr[i + 1]) {
      small = arr[i];
    }
  }
  arr.splice(arr.indexOf(small), 1);
  return arr;
}
  • 처음에 sort로 정렬하고 pop을 하거나 slice로 마지막 요소를 제거해 주었더니 결과는 맞는데 테스트 통과가 되지 않았다. 제한 조건에서 인덱스를 고려하지 못했다.

해결방법


function solution(arr) {
    if (arr.length === 1) return [-1]
    
    let min = Math.min(...arr)
    
    return arr.filter((el) => el !== min)
}
  • 최소값을 구해서 filter를 사용해 최소값만 제거해 주었더니 통과되었다.
profile
프론트엔드 개발자 도전기

0개의 댓글