정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
arr | return |
---|---|
[4,3,2,1] | [4,3,2] |
[10] | [-1] |
💡 문제풀이 과정
- 내가 처음 잘못했던 풀이는 배열에서 가장 작은 숫자를 찾기위해
sort()
를 이용하여 오름차순 정렬을 해서 배열 제일 앞에 오는 숫자를shift()
로 제거하고 진행하였다. 하지만 결과적으로 배열 속 값들의 순서를 모두 바꿔 버렸기때문에 완전히 다른 배열을 리턴하게 되므로 fail.- 그래서 두 번째로는 배열에서 가장 작은 숫자를 찾는
Math.min()
함수를 이용 하였고, 이 제일 작은 값을 어떻게 배열의 순서에 손 대지않고 제거할 수 있을까 하다가indexOf()
를 통해 해당 값의 index를 찾기로 했다. index를 알았다면splice()
를 통해 제거할 수 있을 것이다.
✅ 답안 #1
function solution(arr) {
let answer = [];
let min = Math.min(...arr); // 배열에서 제일 작은 수
let index = arr.indexOf(min); // 제일 작은 수의 index찾기
if (arr.length > 1) {
arr.splice(index, 1);
answer = arr;
} else answer.push(-1);
return answer;
}
✅ 답안 #2 - 빈 배열인 ‘answer’를 삭제한 코드.
function solution(arr) {
let min = Math.min(...arr); // 배열에서 제일 작은 수
let index = arr.indexOf(min); // 제일 작은 수의 index찾기
if (arr.length > 1) {
arr.splice(index, 1);
} else arr = [-1];
return arr;
}