[프로그래머스] 제일 작은 수 제거하기 - Javascript

devmin24·2021년 7월 18일
0

⏳ 도전! 알고리즘

목록 보기
16/32
post-custom-banner


문제 링크

문제

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

풀이

  1. 먼저 If문으로 빈 배열일 경우 -1을 반환하자.
  2. 빈 배열이 아닐 경우, 배열 안의 가장 작은 수를 찾아서 배열에서 제거해주자.
  3. 그러려면 어떻게 코드를 그려야 할까? 메서드를 이용하자!
  • splice() : 배열의 기존 요소를 삭제 또는 교체하거나 새 요소롤 추가하여 배열의 내용을 변경할 수 있다.

    array.splice( 원하는 인덱스 값, 제거할 요소의 갯수, 추가할 요소1, 추가할 요소 2 ...)
    더 자세히 알아보기

  • Math.min() : 주어진 숫자들 중 가장 작은 값을 반환한다.

    Math.min([value1[, value2[, ...]]])
    더 자세히 알아보기

  • indexOf() : 배열에서 지정된 요소를 찾을 수 있는 첫 번째(최초) 인덱스를 반환하고 존재하지 않으면 -1을 반환한다.

    arr.indexOf(searchElement[, fromIndex])
    더 자세히 알아보기

function solution(arr) {
    var answer = [];
    
    if (arr.length <= 1) { // 배열의 길이가 0 or 1 일 경우 -1 반환.
        return [-1];
    } else {
        arr.splice(arr.indexOf(Math.min(...arr)), 1); 
      // 배열에서 가장 작은 요소를 찾고, 그것의 인덱스로 찾아서 하나 제거한다.
        answer = arr; // 제거된 후 남은 배열을 반환.
    }
    return answer;
}

Takeaway

자바스크립트에서 제공하는 메서드를 이용하면 쉽게 풀 수 있는 문제였다. 하지만 그것을 모른다면 어떻게 풀어야 할지 막막한 문제가 된다. 이번 문제를 풀면서 몰랐던 메서드들을 좀 더 익히게 되는 계기가 되었다. 매번 느끼는 거지만, 공식문서는 너무 친절해서 좋다 😁

profile
꾸준함, 열정 한 가득 챙겨 끝없는 목표를 향해 달려가는 개발자👩‍💻
post-custom-banner

0개의 댓글