문제를 풀어보고 다시한번 확인하는 생각을 다져본다. 🔥
배열 중 가장 작은 수 하나를 찾아 제거하고 새로운 배열로 반환하는 문제 만약 배열의 길이가 1
이라면 [-1]
값을 리턴해야하는 문제이다.
문제를 제대로 보고 이해하는게 중요하다는 생각을 했다.. 입출력 예만 보고 작은 수를 제거하고 정렬된 값을 반환하는 문제인줄 알고 풀어서 테스트케이스는 통과됐지만 제출은 X
기존 배열에서 작은 숫자만 쏙 뽑고 나머지는 그대로 유지해야된다 그렇기에 내가 생각했던 건
변수를 새로 지정해 오름차순으로 정렬한 배열과 기존 배열을 비교하도록 하여 그 중에 작은 수를 찾아내
새로운 배열로 반환시키는 코드를 작성 해봤다.
그리고 또한 조건문을 이용해 배열의 길이가 하나라면 [-1]
을 반환하게끔 했다.
function solution (arr) {
let newArr = arr.slice().sort((a, b) => a - b);
if(arr.length === 1){
return [-1]
}
return arr.filter((v) => newArr.indexOf(v) !== 0)
}
solution([3,5,2,1,7]) // [3,5,2,7]
slice
메서드를 이용해서 기존배열 주소값이 바뀌지않게 오름차순으로 정렬한 변수를 지정한뒤
조건문을 이용해 배열의 길이가 1이라면 [-1] 값으로 반환하고
기존 배열에 filter
메서드를 이용하여 기존배열을 새로운 배열의 인덱스로 비교하면 제일 작은 값은 인덱스가 0으로 반환되기에 0을 제외한 나머지 값들만 새로운 배열로 반환하게끔 작성해봤다.
arr.splice(arr.indexOf(Math.min(...arr)),1);
if(arr.length < 1) return[-1];
return arr;
좀 더 간편하게 풀 수 있었던 문제였던 것 같다. splice
를 이용하여 배열을 삭제할 수 있기에
Math.min(...arr)
스프레드 구문을 이용해 배열중 가장 작은수를 뽑아내어 그 작은 수 하나만 지운 나머지 배열을 뱉어내게끔 작성한 코드같다. 또한 조건을 걸어 배열의 길이에 대한 결과값도 작성을 했다.
문제를 풀면서 여러 답안들이 나오는 걸 보면 참 사람들의 머리는 신기하다고 생각한다.
서로의 다른 견해로 하나의 결과값을 도출해나가는 걸 보면 재밌다고 생각한다.
문제를 풀면서 요즘 시간복잡도라는 말을 조금씩 들으려고 이해하는데 아직은 조금 어려운 것 같다.
최소한의 비용으로 고효율의 한줄의 코드를 작성하는게 좋은 개발자라고 생각하기에
아직은 좀 더 배워야 또 알지 않을까 생각해본다!