TIL8: [알고리즘] 제일 작은 수 제거하기
문제
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.
단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.
예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
입출력 예시
| s | return |
| [4,3,2,1] | [4,3,2] |
| [10] | [-1] |
나의 풀이
function solution(arr) {
if(arr.length === 1){
arr = [-1]
return arr
} else{
const min = Math.min(...arr);
return arr.filter((el)=> el !== min)
}
}
1) arr의 길이가 1이라면 arr를 [-1]로 바꾸고 arr을 반환한다.
2) 길이가 1이상이라면 arr를 깊은 복사를해서 최솟값을 구해주는 Math.min을 사용해 최솟값을 min 변수에 담아준다.
3) filter를 통해 해당 수를 제거한다.
다른사람의 풀이
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)),1);
return arr.length? arr : [-1];
}
arr.splice(start, deleteCount, [item1]) : 삭제를 시작할 인덱스에서 삭제할 수의 개수만큼 삭제한 뒤 arr를 반환한다.
1) Math.min()을 사용해 최솟값을 찾고 arr.indexOf()로 인덱스 자리를 찾는다.
2) arr.splice()를 사용해 하나만큼 삭제(해당 최솟값을 삭제한다.)
3) arr.length가 있으면 arr을 반환하고 아니면 [-1]을 반환한다.
댓글남기기