제일 작은 수 제거하기
https://school.programmers.co.kr/learn/courses/30/lessons/12935
내가 직접 푼 방법
function solution(arr) { // arr = [4,3,2,1] 이면 1을 지워야함
let little = arr[0];
for (let i = 0; i<=arr.length; i++) {
if (arr[i] <= little) {
little = arr[i];
}
}
let newarr = arr.filter((v) => v !== little);
if (newarr.length == 0) { // newarr가 빈 배열이면 [-1]을 리턴
return ([-1]);
} else {
return newarr;
}
}
정답을 보지 않고 푸려고 했더니
테스트 1 〉 | 통과 (5.43ms, 43.3MB) |
통과는 했어도 5.43ms 가 걸린 것을 보고 짚고 넘어가야겠다고 생각 했다.
쓸때 없이 긴 코드를 줄이는 확실한 방법은 아무리 봐도 배열을 for문을 통해 작은 수를 찾는 부분 인것 같았다.
그렇다면 핵심 적으로 저 코드를 줄여보자고 생각해서 해본 방법은
splice 함수와 Math.min 함수를 이용해서 작은 수를 자르는 방법 이다.
그렇게 적용하면 다음과 같다.
arr.splice(arr.indexOf(Math.min(...arr)), 1);
arr 배열의 가장 작은 수 하나를 찾아서 splice(삭제) 시키는 간단한 한 줄의 코드이다.
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)), 1);
if (arr.length < 1){
return [-1];
}
return arr;
}
이런식으로 코드를 변경하면
테스트 1 〉 | 통과 (0.56ms, 42.7MB) |
테스트 1의 시간이 0.56ms로 확실히 줄어든 것을 알 수 있다.
이번엔 테스트 시간이 5ms가 넘었기에 확인은 했지만 앞으로도 내 코드에 대해서 한 번씩 더 확인하는 습관을 가지면 좋을 것 같다.
'우코딩 코딩테스트 일기 > JavaScript 코딩테스트 (Lv. 1)' 카테고리의 다른 글
JavaScript 코딩테스트 Lv.1 (정수 내림차순으로 배치하기) (1) | 2024.06.04 |
---|---|
JavaScript 코딩테스트 Lv.1 (자릿수 더하기) (1) | 2024.06.03 |
JavaScript 코딩테스트 Lv.1 (완주하지 못한 선수) (0) | 2024.06.02 |
JavaScript 코딩테스트 Lv.1 (부족한 금액 계산하기) (0) | 2024.05.31 |
JavaScript 코딩테스트 Lv. 1 (문자열내 p와 y의 개수) (0) | 2024.05.31 |