정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
이 문제는 인자로 받은 배열을 sort()로 내림차순 정렬 시키고 가장 마지막 요소를 제거한다는 생각으로 아래와 같이 코딩했다.
function solution(arr){
if(arr.length ===1){
return [-1];
}
arr.sort((a,b) => b-a).pop();
return arr;
}
위 코드가 콘솔에서는 잘 작동하는데 제출하니 다 실패로 뜬다.
뭐가 문제인지 살펴보다가 문제에 낚인 걸 깨달았다.
나는 출력 예시를 보고 정렬을 했는데 문제 어디에도 정렬해야 한다는 문구는 없다.
다시 말해 arr이 만약 [5,7,1,3]으로 주어지면 1을 삭제하고 [5,7,3]을 출력해야 한다.
내가 작성한 코드는 [5,7,3]이 아닌 [3,5,7]이 되버린다.
정렬하지 않고 arr 배열에서 최소값을 찾은 후, 해당 위치에서 삭제해야한다.
우선 최소값을 찾자
function solution(arr){
if(arr.length ===1){
return [-1];
}
Math.min(...arr);
}
Math.min을 사용해서 arr의 최소값을 읽었다.
이제 해당 요소의 인덱스를 읽어서 삭제해주자
function solution(arr){
if(arr.length ===1){
return [-1];
}
arr.splice(arr.indexOf(Math.min(...arr),1);
}