3일차 → 제일 작은 수 제거하기(indexOf(), splice(), filter())
본문 바로가기
항해 중/2주차 알고리즘(프로그래머스)

3일차 → 제일 작은 수 제거하기(indexOf(), splice(), filter())

by 은돌1113 2021. 11. 10.

문제설명

정수를 저장할 배열, 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://velog.io/@oneook/%EC%A0%9C%EC%9D%BC-%EC%9E%91%EC%9D%80-%EC%88%98-%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4

 

제일 작은 수 제거하기 | 프로그래머스

문제 풀러 가기정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를

velog.io

 

https://programmers.co.kr/learn/courses/30/lessons/12935

 

코딩테스트 연습 - 제일 작은 수 제거하기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1

programmers.co.kr

 

댓글