코딩테스트 #23 제일 작은 수 제거하기

Jake Seo·2020년 6월 30일
1

프로그래머스 LV1

목록 보기
23/36

문제

풀이

이 문제의 경우 헷갈리기 쉬운 부분이 입력과 출력만 보면 마치 내림차 순으로 반환해야 하는 것처럼 보입니다. 하지만, 전혀 그렇지 않습니다. 오히려 내림차순으로 반환하면 배열의 순서가 뒤바뀌어 틀렸다고 나옵니다.

여러가지 해답이 존재할 수 있는데, 결국엔 가장 작은 값을 빠르게 찾아서 그 값을 지워주면 됩니다.

여기서 indexOffindIndex 등의 메소드를 사용 가능합니다.
그런데 제출하신 뒤에 소요시간을 잘 살펴보시면 findIndex를 사용했을 때 매우 느립니다.

출처 : https://stackoverflow.com/questions/41443029/difference-between-indexof-and-findindex-function-of-array

이 내용을 보면, indexOf는 단순히 값을 파라미터로 받고, findIndex는 콜백을 파라미터로 받습니다. 결과적으로는 findIndex가 더 느립니다. 다만, 복잡한 조건의 값을 찾을 때 유용하다고 합니다.

대부분의 작은 배열에서는 유의미한 속도차이가 나지 않으니, 상황에 따라 적절한 것을 사용하면 될 것 같습니다.

let solution = (arr) => {
    arr.splice(arr.indexOf(Math.min(...arr)), 1);
    return arr.length === 0 ? [-1] : arr;
};
profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글