정수를 저장한 배열, 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];
//1. find min index with sortedArr
const min = [...arr].sort((a,b)=>a-b)[0];
let minIdx = 0;
for(let i = 0; i < arr.length; i ++){
if(arr[i] === min){
minIdx = i;
}
}
//2. do slice with index
let newArr = [];
if(minIdx === 0){
newArr = arr.slice(1,arr.length);
}else{
const front = arr.slice(0, minIdx);
const back = arr.slice(minIdx+1, arr.length);
newArr = [...front, ...back];
}
return newArr;
}
splice를 썻으면 한 열배이상 줄이 줄지 않았을까 싶다.
사실 까먹고 생각도 못했다
처음에는 정렬된 배열을 통해 최신값을 찾고 반복문을 통해 그에 해당하는 index를 minIdx에 할당한다.
=> 이부분도 indexOf메서드를 쓰면 쉽게 가능해진다.
slice메서드와 spread operator를 통해 최소값만 제외한 것들을 배열에 다시 넣어준다.
=> splice(제거할 숫자의 index, 갯수[optional], 대체할 내용[optional]) 를 통해서 쉽게 가능한 부분
여튼 .. 적재적소에 메서드를 잘 쓰는 것이 중요하나 제한된 메서드로도 풀어낼 수 있는 능력도 필요한 것 같다는 생각이 문듯 들다 만 문제이다
끝!