문제
정수를 저장한 배열, 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 를 활용해 인덱싱을 한 방법을
배울 수 있었다!
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 수박수박수박수박수박수? (0) | 2023.12.15 |
---|---|
[코딩테스트] 가운데 글자 가져오기 (0) | 2023.12.14 |
[코딩테스트] 없는 숫자 더하기 (0) | 2023.12.12 |
[코딩테스트] 핸드폰 번호 가리기 (1) | 2023.12.07 |
[코딩테스트] 두 정수 사이의 합 (1) | 2023.12.04 |