231128 TIL

chillakilla·2023년 11월 28일

나누어 떨어지는 숫자 배열

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

입출력 예

솔루션 코드

<script>
function solution(arr, divisor) {
  const calculatedArr = arr
    .filter((num) => num % divisor === 0)
    .sort((a, b) => a - b);
  const answer = calculatedArr.length !== 0 ? calculatedArr : [-1];
  return answer;
}
</script>
  • arr의 각 element 중, divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열 반환
  • 만약 divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1만 담아서 반환
  • 오름차순으로 정렬된 배열을 반환할 식을 만듦
  • filter를 이용해 각 요소 숫자들은 divisor로 나누었을 때 나머지가 0인 값을 할당
  • 그렇게 담긴 num arr 를 sort에서 쓰이는 오름차순 정렬 식을 이용해서 정렬
  • 최종 반환할 때, 만약 calculatedArr 식을 거쳐 얕은 복사된 배열에 숫자요소가 하나도 없다?
  • 그렇다면 배열에 -1을 담아서 반환

sort 메소드 오름차순/내림차순 정열 식

<script>
let numbers = [4, 2, 5, 1, 3];
numbers.sort(function (a, b) {
  return a - b;
});
console.log(numbers);
// [1, 2, 3, 4, 5] 오름차순
</scipt>
<script>
let numbers = [4, 2, 5, 1, 3];
numbers.sort(function (a, b) {
  return b - a;
});
console.log(numbers);
// [5, 4, 3, 2, 1] 내림차순
</script>

다른 사람의 풀이

<script>
function solution(arr, divisor) {
    var answer = arr.filter(v => v%divisor == 0);
    return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}
</script>
  • 삼항 연산자와 화살표함수를 이용하셔서 굉장히 짧게 구현하셨다.
profile
꾸준하려 하는 쉽덕놈

0개의 댓글