Programmers | #Lv1 "제일 작은 수 제거하기"

블로그 이사 완료·2022년 9월 18일
0
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] 입니다.


입/출력 예

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

나의 풀이

function solution(arr) {
  arr.splice(arr.indexOf(Math.min(...arr)), 1);

  if (arr.length < 1) return [-1];
  return arr;
}

Review

배열 안에 있는 정수 중 가장 작은 수를 제거한 배열을 반환하는 문제였다.

처음에는 배열을 정렬하고 가장 작은 수를 제거해서 배열을 반환 해야 하는 줄 알았다.

그래서 sort() reverse() 로 정렬 하고 맨 뒤에 요소가 가장 작을테니 pop()으로 제거한 후 반환 했다.

하지만 문제의 요점은 그게 아니었다. 배열의 정렬은 그대로 둔 채로 가장 작은 수만 제거하고 그대로 반환 하는 것이었다.

그래서 가장 작은 수를 찾는 Math.min() 와 배열의 모든 수를 넣기 위해 스프레드 문법 ... 를 사용했다.

splice()로 가장 작은수와 indexOf()를 사용해서 배열 내의 가장 작은 수만 제거 할 수 있었다.

문제의 조건과 요점을 파악하는 것도 중요하다고 생각했다.


참고 : Spread syntax (...) - Mdn Web Docs

profile
https://kyledev.tistory.com/

0개의 댓글