문제 설명
정수를 저장한 배열, 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]
배열의 길이가 1인 경우는 기저사례로 처리하여 answer 배열에 -1을 넣고 return 해주었고, 나머지 경우에는 배열 내의 최솟값을 구해서 min 변수에 넣고 배열.splice(배열.indexOf(min),1)
을 이용하여 해당 값만 배열에서 제거 후 answer 배열로 배열을 복사했다.
나는 최솟값을 구할 때 무식한 방법으로 배열을 전부 돌면서 값을 비교하여 가장 작은 값을 구했는데 다른 풀이를 보니 JavaScript 에서 제공하는 Math.min()
을 이용하여 구할 수 있었다.
function solution(arr) {
let answer = [];
let min = arr[0];
if(arr.length === 1){
answer.push(-1);
}else{
for(let i=1; i<arr.length; i++){
if(min>arr[i]){
min = arr[i];
}
}
arr.splice(arr.indexOf(min),1);
answer = arr.slice();
}
return answer;
}
function solution(arr) {
let answer = [];
let min = Math.min.apply(null,arr);
if(arr.length === 1){
answer.push(-1);
}else{
arr.splice(arr.indexOf(min),1);
answer = arr.slice();
}
return answer;
}