[알고리즘] 제일 작은 수 제거하기
알고리즘 문제 풀이 : 제일 작은 수 제거하기
알고리즘 문제 풀이 : 제일 작은 수 제거하기
문제
<문제 설명>
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수,
solution을 완성해주세요.
단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.
예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고,
[10]면 [-1]을 리턴 합니다.
<제한 조건>
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
<입출력 예>
arr return
[4,3,2,1] [4,3,2]
[10] [-1]
나의 풀이
arr 배열에서 최소값을 구해 위치를 찾고 그 위치를 제거한 arr을 리턴
function solution(arr) {
let answer = [];
let result = [];
// NO
//result = arr.sort().reverse().slice(0, arr.length - 1);
//answer = result.length === 0 ? [-1] : result;
// arr 배열에서 최소값을 구한 다음
// 배열 위치를 찾아 제거한다.
if(arr.length <= 1) return [-1];
arr.splice(arr.indexOf(Math.min(...arr)), 1);
return arr;
}
공부하기
- Math.min() 함수 Math.min() 함수는 주어진 숫자들 중 가장 작은 값을 반환합니다.
- Spread syntax 전개 구문을 사용하면 배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 (함수로 호출할 경우) 또는 요소 (배열 리터럴의 경우)로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장시킬 수 있습니다.
- Rest parameters Rest 파라미터 구문은 정해지지 않은 수(an indefinite number, 부정수) 인수를 배열로 나타낼 수 있게 합니다.
- indexOf() 메서드 indexOf() 메서드는 호출한 String 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환합니다. 일치하는 값이 없으면 -1을 반환합니다.
- slice() 메서드 splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
참고
- 알고리즘 문제 : 프로그래머스