[Level 1] 제일 작은 수 제거하기
글 작성자: NoHack
728x90
문제 설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한 조건
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i≠j이면 arr[i]≠arr[j] 입니다.
문제 풀이
const solution = (arr) => {
// 배열 내 가장 작은 값을 가진 요소와 인덱스를 구함
const [minIndex, _] = arr.reduce((a, b, index) => {
if (a[1] > b) return [index, b];
}, [-1, 1e9]
);
// 가장 작은 값 제거
arr.splice(minIndex, 1);
return arr.length === 0 ? [-1] : arr;
};
const inputs = [[4, 3, 2, 1], [10]];
inputs.forEach((input) => console.log(solution(input)));
배열 안에서 가장 작은 값을 찾을 때 사용할 수 있는 메소드는 Array.prototype.reduce와 Math.min이 있습니다. 하지만 저는 reduce를 사용했는데, 그 이유는 인덱스까지 함께 저장하기 위함입니다. 이렇게 해서 가장 작은 값이 위치한 인덱스를 구할 수 있게 되고, 이렇게 구한 인덱스를 이용해 해당 요소를 배열에서 제거할 수 있습니다.
그리고 문제에서 마지막에 배열을 반환할 때, 배열이 비어있다면 [-1]을 반환하게끔 하라 했으니 잊지 않고 처리해 주셔야 합니다.
'📝 문제풀이 > 프로그래머스' 카테고리의 다른 글
[Level 1] 정수 내림차순으로 배치하기 (0) | 2022.02.25 |
---|---|
[Level 1] 정수 제곱근 판별 (0) | 2022.02.25 |
[Level 1] 짝수와 홀수 (0) | 2022.02.24 |
[Level 1] 최대공약수와 최소공배수 (0) | 2022.02.24 |
[Level 1] 콜라츠 추측 (0) | 2022.02.24 |
댓글
이 글 공유하기
다른 글
-
[Level 1] 정수 내림차순으로 배치하기
[Level 1] 정수 내림차순으로 배치하기
2022.02.25 -
[Level 1] 정수 제곱근 판별
[Level 1] 정수 제곱근 판별
2022.02.25 -
[Level 1] 짝수와 홀수
[Level 1] 짝수와 홀수
2022.02.24 -
[Level 1] 최대공약수와 최소공배수
[Level 1] 최대공약수와 최소공배수
2022.02.24