- 정수를 저장한 배열,
arr
에서 가장 작은 수를 제거한 배열을 return하는 함수를 완성하라.- return하려는 배열이 빈 배열인 경우엔 배열에
-1
을 채워 리턴하라.- Example
- arr가
[4,3,2,1]
인 경우는[4,3,2]
를 리턴- arr가
[10]
면[-1]
리턴
function solution(arr) {
let min = arr[0];
let minIndex = 0;
if(arr.length > 1) {
for(let i = 1; i < arr.length; i++) {
if(arr[i] < min) {
min = arr[i];
minIndex = i;
}
}
arr.splice(minIndex, 1);
} else return [-1];
return arr;
}
📍 풀이과정
1. arr의 길이에 따라 return하는 값이 다르므로 이를 if 조건문으로 먼저 나누어줍니다.
- arr의 길이가 1보다 클 때 : 가장 작은 수를 제거한 배열 return
- arr의 길이가 1보다 작을 때 :[-1]
return
2. arr 내에서 가장 작은 수를 찾아 제거
-[ 4, 3, 2, 1 ]
가 주어졌다고 했을때, 가장 첫번째 숫자인4
를 기준으로 반복문을 돌릴 것이기 때문에, 변수 min에arr[0]
인 4를 넣어두고 시작.
- 첫번째 수인 4와 두번째 수인 3를 비교해 더 작은 수를 min으로 바꾸어준다. 이와 같은 과정을 각 자리수마다 반복해주는 반복문을 만들어준다.
- 가장 작은 수의 index를 찾아splice()
로 잘라내줄 것이기 때문에, i가 몇번째가지 돌았는지 minindex로 알 수 있게 해준다.
function solution(arr) {
return arr.length < 2 ? [-1] : arr.filter(v => v > Math.min(...arr));
}
- arr의 길이가 2보다 작으면
[-1]
을 return하고, 2보다 작지 않으면arr.filter()
를 return한다.Math.min(...arr)
으로 arr 내에서 가장 작은 수를 찾는다.- 위 식의
filter()
는v > Math.min(...arr)
이 조건에 충족한 요소들만으로 모아 새로운 배열을 반환하므로, 가장 작은 수가 제거된 배열이 반환된다.
splice()
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
start
: 배열의 변경을 시작할 인덱스deleteCount
: 배열에서 제거할 요소의 수filter()
arr.filter(callback(element[, index[, array]])[, thisArg])
callback
: 각 요소를 시험할 함수. true를 반환하면 요소를 유지하고, false를 반환하면 버린다.