정수를 저장한 배열, 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) {
arr.splice(arr.indexOf(Math.min(...arr)), 1);
if (arr.length < 1) return [-1];
return arr;
}
배열 안에 있는 정수 중 가장 작은 수를 제거한 배열을 반환하는 문제였다.
처음에는 배열을 정렬하고 가장 작은 수를 제거해서 배열을 반환 해야 하는 줄 알았다.
그래서 sort()
reverse()
로 정렬 하고 맨 뒤에 요소가 가장 작을테니 pop()으로 제거한 후 반환 했다.
하지만 문제의 요점은 그게 아니었다. 배열의 정렬은 그대로 둔 채로 가장 작은 수만 제거하고 그대로 반환 하는 것이었다.
그래서 가장 작은 수를 찾는 Math.min()
와 배열의 모든 수를 넣기 위해 스프레드 문법 ...
를 사용했다.
splice()
로 가장 작은수와 indexOf()
를 사용해서 배열 내의 가장 작은 수만 제거 할 수 있었다.
문제의 조건과 요점을 파악하는 것도 중요하다고 생각했다.