https://programmers.co.kr/learn/courses/30/lessons/12935
생각했던 알고리즘은
1. arr length가 1이면 [-1]을 return 한다
2. arr에서 가장 작은 수를 구한다
3. 그 수를 arr에서 뺀다
여서 굉장히 간단하다 생각했습니다
JS문법이 간단하지 않아서 그렇지,,,
1. 배열에서 제일 작은 수 구하기 - Min, Max
let arr = [1, 2, 3, 4, 5]
let minNum = Math.min(1, 2, 3, 4, 5) // 1
let maxNum = Math.max(1, 2, 3, 4, 5) // 5
위와 같이 min과 max를 이용해 최소 최대값을 구할 수 있습니다
숫자를 풀어서 써야하는데 그렇다면 array를 어떻게 풀수 있을까요
아래와 같이 2가지 방법이 있습니다
Spread문법 (...)과 apply()
let arr = [1, 2, 3, 4, 5]
// 1. ... spread문법
let minNum1 = Math.min(...arr)
// 2. apply()
let minNum2 = Math.min.apply(null, arr)
1. spread는 ...을 사용해 배열의 원소들을 하나씩 꺼내어서 리턴하는 방식입니다
2, apply()는 함수를 호출하는 방법중 하나인데, 함수에서 사용할 this객체와 호출하는 함수로 전달할 파라미터를 입력받습니다. 첫번째 파라미터로는 this를 전달할 필요 없으므로 null, 두번째 파라미터는 배열형태 그대로 넣어주면 됩니다.
전 apply는 익숙하지 않아 spread를 사용할 것 같습니다
2. 배열에서 특정 숫자 제거하기 - filter
Array.prototype.filter() / return 값 array
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result); // Array ["exuberant", "destruction", "present"]
위의 예시처럼 filter내부 조건과 일치하는 것만 array 형식으로 return 해주는 함수입니다
let arr = [1, 2, 3, 4, 5]
let minNUm = 1
answer = arr.filter(elem => elem !== minNum) // [2, 3, 4, 5]
위에처럼 코드를 작성하면 특정값을 제외한 array를 return 할 수 있습니다
답
function solution(arr) {
var answer = [];
if (arr.length === 1) {
return [-1]
}
// list에서 가장 작은 수를구한다
let minNum = Math.min(...arr)
// 뺀다
answer = arr.filter(elem => elem !== minNum)
return answer;
}
모두 즐코 하세요 :)