Algorithm - 제일 작은 수 제거하기

SeowooCHo2·2022년 5월 19일
0

알고리즘

목록 보기
25/28
post-thumbnail

제일 작은 수 제거하기

<프로그래머스 문제를 기반으로 합니다>

문제 설명

  • 정수를 저장한 배열, 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]
  1. 문제, 제한조건, 입출력예에서 보면 길이가 1인 배열 arr이 입력되면 빈 배열이 리턴될 것이고 그럴 경우엔 [-1]을 반환해야 한다는 것

  2. 내림차순하라는 조건은 없다는 것

유념해서 풀어보자 😁

<배열 인덱스들 중 최대 / 최소 구하는 법>

배열 안의 인덱스 값들 중 최소값 / 최대값을 구하는 방법을 알아보자
최대 / 최소라 하면 바로 생각나는 바로 그것 !! ☜(゚ヮ゚☜)

Math.min() / Math.max()

하지만 이 함수들을 배열에 바로 갖다 쓰게되면

let arr = [1, 2, 3]
console.log(Math.min(arr))

//NaN 출력

Not a Number가 출력된다.
왜냐하면 Math.min() / Math.max()는 배열이 아닌 고유한 변수를 기대하고 있는데, 배열을 넣으니 이미 첫번째 조건 입력 변수가 고유한 변수가 아니다에서 알고리즘이 끝나버리는 것이다.

그럼 이 배열을 숫자형식으로 바꿀 순 없을까???🤔

let arr = [1, 2, 3]
console.log(Math.min(...arr))

// 1 출력
Math.min(...arr)
= Math.min(1, 2, 3)

이렇게 표현할 수 있다.
이 구문은 ES6 / ES2016의 destructing 할당 구문이라고 한다
destructing 할당 구문은 배열 또는 개체에서 데이터를 추출하여 별도의 변수로 만들 수 있는 JavaScript 식이다. ( ̄︶ ̄)↗ 

그럼 문제를 풀어보자 😀

  1. 위에서 배운 배열에서 최소값 구하는 방법으로 최소값을 구하고
  2. 최소값의 인덱스를 indexOf()를 이용하여 구한 후,
  3. splice() 함수를 이용하여 해당 최소값의 인덱스를 제거해주면
  4. 답이 뙇👍

<풀이 완성 코드>

function solution(arr) {
    const min = Math.min(...arr)
    arr.splice(arr.indexOf(min), 1)
    return arr.length < 1 ? [-1] : arr
}
profile
먹고 배우는 것엔 아끼지 말자구 ( ̄︶ ̄)↗ 

0개의 댓글