제일 작은 수 제거하기 | 프로그래머스

Wonkook Lee·2021년 7월 27일
0

JS Coding Test | Level 1

목록 보기
10/20
post-thumbnail

문제 풀러 가기

제일 작은 수 제거하기 (Lv.1)


문제

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 사항

  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

입출력 예

arrresult
[4,3,2,1][4,3,2]
[10][-1]

나의 풀이

function solution(arr) {
  if (arr.length <= 1) return [-1];
  let min;
  arr.reduce((acc, cur) => min = cur > acc ? acc : cur);
  return arr.filter(e => e !== min);
}

console.log(solution([4,3,2,1]));
// Expected output: [4, 3, 2]
console.log(solution([10]));
// Expected output: [-1]

우선 값이 하나이거나 빈 배열을 인자로 받을 경우 [-1]을 반환하고 즉시 함수를 종료한다.
원치 않는 input을 먼저 가려내는 테크닉을 Guard Clause라고 한다.
reduce를 사용하여 이전 값과 현재 값을 비교하여 최종적으로 가장 작은 수(Number)를 알아내고, filter 메소드로 해당 수를 제외한 나머지 배열을 반환한다. (+9점)


다른 사람의 풀이

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

펼침 연산자로 배열을 풀어 Math.min 메소드로 최소값을 구한 뒤 해당 값의 인덱스를 알아내어 배열에서 제거한다. 👍
내장된 메소드를 최대한 활용하는것이 최고인 것 같다

profile
© 가치 지향 프론트엔드 개발자

0개의 댓글