스파르타 (React_6기) 본캠프

2024. 08. 22. (알고리즘 - 나누어 떨어지는 숫자 배열)

cha123hein 2024. 8. 22. 22:47

★ 문제

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

(arr은 자연수를 담은 배열입니다.

정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.

divisor는 자연수입니다.

array는 길이 1 이상인 배열입니다.

)

 

★ 문제 해결 과정

1. for문을 사용하여 조건에 해당하는 객체만 배열안에 넣는다.

2. 해당되는 객체가 아무것도 없으면 -1을 넣는다.

3. sort를 사용하여 오름차순으로 배열한다.

 

최근 너무 for문만 사용하는 것 같아 다른 병법으로도 풀어보았다.

1. filter함수를 사용하여 조건에 해당되는 객체만 걸러낸다.

2. 삼항연산자를 사용해 해당되는 객체가 없을 경우(true인 경우) -1을, 객체가 있는 경우(false인 경우) sort함수를 사용해 객체를 오름차순으로 배열한 값을 출력한다.

 

★ 제출한 문제 답안

function solution(arr, divisor) {
  var answer = [];
  for (i = 0; i < arr.length; i++) {
    if (arr[i] % divisor === 0) {
      answer.push(arr[i]);
    }
  }
  if (answer.length === 0) {
    answer.push(-1);
  }
  answer.sort(function (a, b) {
    return a - b;
  });
  return answer;
}
function solution(arr, divisor) {
    const answer = arr.filter(num => num % divisor===0);
    return answer.length === 0?[-1]:answer.sort((a,b) => a-b);
}