본문 바로가기

프로그래머스/구현

[구현] 프로그래머스 '제일 작은 수 제거하기' - js

반응형

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;
}
반응형