본문 바로가기

Coding Test/Programmers

[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 109 - 제일 작은 수 제거하기)

728x90

 

# 문제

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



# 답안

// 방법 1) splice, indexOf, Math.min() 사용
// arr를 복사해서 최솟값 구하고, arr에서 그 최솟값의 index를 구함
// arr.splice (최솟값의 인덱스, 한개) 해서 arr에서 최솟값을 삭제하기
// arr의 길이가 1보다 작으면 -1, 크면 arr

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


// 방법 2) Math.min, filter 사용
// arr를 복사해서 최솟값 구해서 변수 min에 할당
// arr의 길이가 1이 아니면, arr에서 min을 뺀 값을 필터, 아니면 -1 return

function solution(arr) {
  const min = Math.min(...arr);
  return arr.length !== 1 ? arr.filter((num) => num !== min) : [-1];
}

 

728x90