📢 문제 설명
정수를 저장한 배열, 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) {
let answer = [];
if (arr.length > 1) {
let minIndex = Math.min(...arr);
answer = arr.filter((el) => el !== minIndex);
} else {
answer.push(-1);
}
//console.log(answer);
return answer;
}
function solution(arr) {
let answer = [];
if (arr.length > 1) {
const minIndex = Math.min(...arr); // let 을 const 로 변경
answer = arr.filter((el) => el !== minIndex);
} else {
answer.push(-1);
}
return answer;
}
let > const가 더 적합함
function solution(arr) {
let answer = [];
if (arr.length > 1) {
const min = Math.min(...arr); // 가장 작은 수 조회
const minIndex = arr.indexOf(min); // 가장 작은 수의 index 를 조회
arr.splice(minIndex, 1); // index 를 기준으로 해당 수를 배열에서 제거
answer = arr;
} else {
answer.push(-1);
}
return answer;
}
📍 filter 는 결국 배열에 있는 모든 항목을 조회 즉, loop 를 실행하는 것입니다.
배열의 크기가 크면 클수록 오래 걸리는 로직이 되는 것이죠.
그래서 배열의 크기가 커질수록 index 로 제어하는게 더 빠릅니다.
splice()
메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
📍 위에선 해당 minIndex부터 1개를 지움 !