문제설명
정수를 저장할 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수
단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.
예를 들어 arr가 [4,3,2,1]인 경우에는 [4,3,2]를 리턴하고, [10]이면 [-1]을 리턴하세요.
제한사항
- arr는 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
내가 푼 문제 풀이
function solution(arr) {
let answer = []
let min = arr[0]
// 최솟값의 기준으로 배열의 첫번째 요소를 넣는다.
if(arr.length == 1){
return [-1]
// 배열의 요소가 하나 밖에 없는 경우
// 비교할 대상이 없기 때문에 -1을 배열에 담아서 return 한다.
}else{ // 배열의 요소가 2개 이상일 경우
for(let i = 0; i<arr.length; i++){
if(min > arr[i]){
// if문을 사용해서 min의 값과 arr[i]를 비교해서
// 더 작은 값이 나오면
min = arr[i]
// min의 값을 바꾼다.
}
}
}
arr.splice(arr.indexOf(min), 1)
// arr 배열에서 가장 작은 숫자의 index 요소를 넣고 삭제한다.
answer = arr
// arr 배열 원본이 바뀌었기 때문에 answer에 넣는다.
return answer;
}
function solution(arr) {
let min = arr[0]
if(arr.length <= 1){
return [-1]
}else{
for(let i = 0; i<arr.length; i++){
if(min > arr[i]){
min = arr[i]
}
}
}
return arr.filter((item, i)=>{return item!=min});
}
다른 사람이 푼 문제 풀이
function solution(arr) {
if (arr.length <= 1) return [-1];
let min;
arr.reduce((acc, cur) => min = cur > acc ? acc : cur);
return arr.filter(e => e !== min);
}
console.log(solution([4,3,2,1]));
// Expected output: [4, 3, 2]
console.log(solution([10]));
// Expected output: [-1]
https://programmers.co.kr/learn/courses/30/lessons/12935
'항해 중 > 2주차 알고리즘(프로그래머스)' 카테고리의 다른 글
4일차 → 콜라츠 추측(while 반복문) (0) | 2021.11.11 |
---|---|
4일차 → 하샤드 수(forEach(), reduce()) (0) | 2021.11.11 |
3일차 -> 정수 제곱근 판별(Math.sqrt(), Math.pow(), Number.isInteger()) (0) | 2021.11.10 |
3일차 → 서울에서 김서방 찾기(템플릿 연산자, indexOf()) (0) | 2021.11.10 |
3일차 → 수박수박수박수박수박수?(repeat()) (0) | 2021.11.10 |
댓글