코딩테스트

[코딩테스트] 제일 작은 수 제거하기

이경욱 2023. 12. 13. 09:59

문제

정수를 저장한 배열, arr에서

가장 작은 수를 제거한 배열을 리턴하는

함수, solution을 완성해주세요.

 

단, 리턴하려는 배열이 빈 배열인 경우엔

배열에 -1을 채워 리턴하세요.

예를들어 arr가 [4, 3, 2, 1]인 경우는 [4, 3, 2]만 리턴하고,

[10]이면 [-1]을 리턴합니다.

 

 

해결

function solution (arr) {
    const target = Math.min(...arr)
    const answer = arr.filter((item) => item !== target)
    return answer == '' ? [-1] : answer
}

 

처음에 sort와 slice로 인덱싱을 통해

가장 작은 수를 배출했는데

배열의 순서가 지켜지지 않아 오답이 났다.

 

찾아보니 Math.min 이라는 메서드가 있었고

배열의 순서를 바꾸지 않으며 최소값을 구해주었다.

 

해당 메서드로 target 이라는 변수를 선안한 곳에

최소값을 넣었고

 

answer 변수에 filter 메서드로 

최소값을 제외한 배열의 값을 return 하였다

 

 

 

다른 사람의 풀이

function solution2(arr) {
    arr.splice(arr.indexOf(Math.min(...arr)),1);
    if(arr.length<1)return[-1];
    return arr;
}

 

splice 메서드 안에

indexOf와 Math.min 메서드를 넣어서 인덱싱을 해주었다.

 

splice 안에 indexOf 를 활용해 인덱싱을 한 방법을

배울 수 있었다!