🍀 코딩 테스트/프로그래머스

LV1 - 제일 작은 수 제거하기

놀러와요 버그의 숲 2022. 8. 13. 11:44
728x90
반응형

 

1차풀이 => 실패

function solution(arr) {
    
let min = Number.MAX_SAFE_INTEGER;
let result = [];

for (let i = 0; i < arr.length; i++) {
  if (arr[i] < min && arr.length > 1) {
    min = arr[i];
    result = arr.filter((value) => value > min);
  } else {
    result = [-1];
  }
}

return result
}

 

2차풀이 => 성공

function solution(arr) {
    
let min = Number.MAX_SAFE_INTEGER;
let result = [];

for (let i = 0; i < arr.length; i++) {
  if (arr[i] < min && arr.length > 1) {
    min = arr[i];
  }
}

arr.length === 1
  ? (result = [-1])
  : (result = arr.filter((value) => value > min));

    return result
}

삼항 연산자를 돌려 arr.length가 1일때랑 아닐 때를 구분해주어서 다르게 result값에 할당하도록 하였다. 

 

 

 

다른 스터디원 풀이

function solution1(arr) {
  // 입력 : 정수가 들어있는 배열 arr
  // 출력 : 가장 작은 수를 제거한 배열 answer, 리턴할 배열이 빈 배열일 경우 -1을 넣어 리턴한다.

  let min = Math.min(...arr);
  let answer = arr.filter(el => el !== min);

  return answer.length > 0 ? answer : [-1];
}

console.log(solution1([10]));

1) Math.min() 메서드를 통해서 배열에서 가장 작은 수를 뽑아내서 min 이라는 변수에 담으셨고

2) filter 메서드를 통해서 원소가 min이랑 같지 않은 것들만 남겨두는 방식으로 푸셨다. 

 

나는 부등호로 판단했는데, !== 이런것으로 판단하는게 더 정확하다고 생각한다.