[프로그래머스] 제일 작은 수 제거하기 문제 예시
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한 조건- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
arr | return |
[4,3,2,1] | [4,3,2] |
[10] | [-1] |
위 문제에서 array 순서를 바꿔준 채로(sort) 제일 작은 수를 제거하고 return 하면 테스트 케이스 모두 실패가 나온다.
기본 array 순서는 지키면서 특정 값(가장 작은 수)만 삭제 하는 방법은 아래와 같다.
function solution(arr) {
let min = [...arr].sort((a, b) => a - b)[0];
let result = arr.filter((item) => item !== min);
return result.length > 0 ? result : [-1];
}
arr를 복사해서 정렬한 후 제일 작은 수를 찾아주고 filter로 제일 작은 수 값을 걸러주면 된다!
위 방식으로 없애고 싶은 값을 지정한 후, filter로 그 값이 아닌 array를 다시 반환해주면 원하는 특정 값만 제거 가능하다!
- 다른 풀이
function solution(arr) {
const min = Math.min(...arr);
return arr.length !== 1 ? arr.filter(i => i !== min) : [-1]
}
역시 arr를 복사해 사용하고 sort 대신 Math.min()으로 최솟값을 찾아줬다.
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)),1);
if(arr.length<1)return[-1];
return arr;
}
splice()를 이용한 풀이
참고 사이트
How can I remove a specific item from an array?
🙂 공부하며 정리하는 글입니다. 공감과 피드백 환영합니다.
'프로그래밍 > JavaScript' 카테고리의 다른 글
[JS] JavaScript에서 Number, 문자열 진법 자유롭게 변환하기 / 3진법 뒤집기 (0) | 2023.01.25 |
---|---|
[JS] reduce index와 함께 효과적으로 쓰기 / 최솟값 만들기 풀이 예시 / ?? 논리 연산자 (1) | 2023.01.22 |
[Js] 구조 분해 할당(Destructuring assignment)이란? (1) | 2023.01.18 |
[JS] this는 도대체 뭘까? this의 개념과 예시 문제 풀이 (0) | 2023.01.17 |
[Js] Array push와 concat의 차이 (0) | 2023.01.09 |