프로그래머스/구현
[구현] 프로그래머스 '제일 작은 수 제거하기' - js
bbeyak
2022. 10. 20. 20:02
반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 설명
이 문제의 핵심은 원본 배열 순서 그대로 리턴해야한다는 것이다.
처음엔 정렬 후 마지막 값만 pop()으로 빼주고 배열을 리턴했는데, 테스트케이스만 통과되고 제출이 안됐다. 이유를 살펴보니 원본 배열의 순서가 지켜져야하는 것이였다.
arr.slice()를 통해 arr와 같은 배열을 만들어준다. 리턴할 배열 answer을 빈 배열로 선언해준 후, arr를 내림차순 정렬해주고 가장 끝에 있는 값을 smallest 변수에 저장해준다. for문을 돌며 newArr에 있는 값이 smallest와 같지 않으면 answer 배열에 push해준다.
arr의 길이가 1 이면 [-1]을 리턴하라고 되어있으므로 삼항연산자를 이용하여 조건에 맞는 배열을 리턴해준다.
3. 코드
function solution(arr) {
let newArr = arr.slice();
let answer = [];
arr.sort((a,b) => b-a);
let smallest = arr[arr.length-1];
for(let i=0;i<newArr.length;i++){
if(newArr[i] !== smallest) answer.push(newArr[i])
}
return arr.length === 1 ? [-1] : answer;
}
반응형