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

Janet·2023년 2월 23일
0

Algorithm

목록 보기
27/314

문제 설명

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

제한 조건

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

입출력 예

arrreturn
[4,3,2,1][4,3,2]
[10][-1]

문제풀이

💡 문제풀이 과정

  • 내가 처음 잘못했던 풀이는 배열에서 가장 작은 숫자를 찾기위해 sort()를 이용하여 오름차순 정렬을 해서 배열 제일 앞에 오는 숫자를 shift()로 제거하고 진행하였다. 하지만 결과적으로 배열 속 값들의 순서를 모두 바꿔 버렸기때문에 완전히 다른 배열을 리턴하게 되므로 fail.
  • 그래서 두 번째로는 배열에서 가장 작은 숫자를 찾는 Math.min() 함수를 이용 하였고, 이 제일 작은 값을 어떻게 배열의 순서에 손 대지않고 제거할 수 있을까 하다가 indexOf()를 통해 해당 값의 index를 찾기로 했다. index를 알았다면 splice()를 통해 제거할 수 있을 것이다.

✅ 답안 #1

function solution(arr) {
  let answer = [];
  let min = Math.min(...arr); // 배열에서 제일 작은 수
  let index = arr.indexOf(min); // 제일 작은 수의 index찾기
  if (arr.length > 1) {
    arr.splice(index, 1);
    answer = arr;
  } else answer.push(-1);
  return answer;
}

✅ 답안 #2 - 빈 배열인 ‘answer’를 삭제한 코드.

function solution(arr) {
  let min = Math.min(...arr); // 배열에서 제일 작은 수
  let index = arr.indexOf(min); // 제일 작은 수의 index찾기
  if (arr.length > 1) {
    arr.splice(index, 1);
  } else arr = [-1];
  return arr;
}
profile
😸

0개의 댓글