[Programmers #12935] - 제일 작은 수 제거하기

G_NooN·2024년 1월 11일
0

Algorithms

목록 보기
19/33
post-thumbnail

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

문제 설명

정수 배열 arr에서 가장 작은 수를 제거한 배열을 return하는 solution 함수를 완성하라.

단, return하려는 배열이 빈 배열인 경우, 배열에 -1을 채워서 return하라.

예를 들어, arr이 [4,3,2,1]인 경우에는 [4,3,2]를 return하고, [10]이면 [-1]을 return한다.

제한 조건

  1. arr은 길이가 1 이상인 배열이다.
  2. 인덱스 i, j에 대해 i != j 이면 arr[i] != arr[j]다.

입출력 예시


접근 방식

  1. 입력값: 정수 배열 / 출력값: 가장 작은 수를 제거한 정수 배열
  2. 가장 작은 수의 index를 구할 변수를 선언한다.
  3. 배열을 순회하면서 가장 작은 수를 가진 index를 찾는다.
  4. 해당 index의 요소를 제거한다.
  5. 제거한 결과를 반환한다
    5-1. 만일, 제거한 결과 배열의 길이가 0이면 [-1]을 출력한다.

코드

function solution(arr) {
  let answer = [];
  let minIndex = 0;

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] <= arr[minIndex]) {
      minIndex = i;
    }
  }

  arr.splice(minIndex, 1);
  answer = arr.length > 0 ? arr : [-1];

  return answer;
}

더 개선할 수 있는 방법

  • 전개 연산자(...)를 사용하여 배열을 문자열 형태로 펼친다.
  • Math.min()을 사용하여 해당 문자열의 최소값을 구한다.
  • indexOf()를 사용하여 해당 최소값의 index를 바로 지정한다.
function solution1(arr) {
  let answer = [];

  // ...arr에서 작은 수를 구하고, 해당 수의 인덱스를 구함
  let minIndex = arr.indexOf(Math.min(...arr));

  // 해당 수의 index를 제거함
  arr.splice(minIndex, 1);

  answer = arr.length === 0 ? [-1] : arr;

  return answer;
}

주요 개념

  • 전개 연산자(...)
  • Math.min()
  • indexOf()
profile
쥐눈(Jin Hoon)

0개의 댓글