1. 문제 설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
2. 제한 조건
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
3. 예시
입력/출력
4. 풀이
[splice / indexOf / Math.min / if..else]
- 배열의 길이가 1보다 크면 배열의 값 중 최소값이 존재하는 경우
- 배열에서 splice (a,b) 는 a번째 부터 b만큼 삭제 라는 의미
- indexOf는 해당되는 값의 위치(index 즉, 배열 내 몇번째 인지)를 찾음
- Math.min은 고유한 변수에서만 작동하기 때문에 배열에서 작동하게 변경 필요
- ES6에서는 ES2015와 ES2016에서 가능하도록 적용 방법이 생김
*답변 아래에서 설명
function solution(arr) {
var answer = [];
if (arr.length > 1) {
arr.splice(arr.indexOf(Math.min(...arr)),1)
//배열에서는 Math.min이 안된다.. 그래서 ES6/ES2015 또는 ES6/ES2016 적용방법이 있다.
//문제에 쓴건 ES6/ES2016
answer = arr
} else {
answer = [-1]
}
return answer;
}
Math.max 또는 Math.min 배열 적용 방법
[ES6 / ES2015]
var nums = [1, 2, 3]
Math.min.apply(Math, nums) // 1
Math.max.apply(Math, nums) // 3
Math.min.apply(null, nums) // 1
Math.max.apply(null, nums) // 3
[ES6 / ES2016]
ES2016에서는 destructing 할당을 통해 할당 구문은 어레이 또는 개체에서 데이터를 추출하여 별도의 변수로 만들 수 있는 JavaScript 식
const nums = [1, 2, 3]
Math.min(...nums) // 1
Math.max(...nums) // 3
'개발 공부 > 알고리즘' 카테고리의 다른 글
[프로그래머스 알고리즘] "정수 제곱근 판별" JavaScript / Math.sqrt (), Math.pow() (0) | 2022.03.16 |
---|---|
[프로그래머스 알고리즘] "하샤드 수" JavaScript / toString, split, reduce (0) | 2022.03.16 |
[항해 99 모의고사 알고리즘] "신대륙 발견" JavaScript / .new Date(), for, while (0) | 2022.03.15 |
[항해 99 모의고사 알고리즘 ] "몇시간 했더라?" JavaScript (0) | 2022.03.15 |
[프로그래머스 알고리즘] "이상한 문자 만들기" JavaScript /.split(), .sort(), . join() , .parseInt() (0) | 2022.03.15 |