[프로그래머스 Lv1] 나누어 떨어지는 숫자 배열 - (Javascript)

eeeyooon·2023년 12월 15일
0

나누어 떨어지는 숫자 배열

문제 링크

📩 문제 설명

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

제한사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.

입출력 예

arrdivisorreturn
[5, 9, 7, 10]5[5, 10]
[2, 36, 1, 3]1[1, 2, 3, 36]
[3,2,6]10[-1]

제출 답안

function solution(arr, divisor) {
    let answer = [];
    answer = arr.filter((v) => v/divisor === parseInt(v/divisor));
    answer.length !== 0 ? answer.sort((a,b)=> a-b) : answer = [-1];
    return answer;
}

답안 설명

나누어 떨어지는 값이라면 parseInt를 사용해서 자연수를 만들었을 때도, 원본 숫자값과 일치해야하므로 filter()를 사용하여 나누어 떨어지는 숫자들만 answer 배열에 담았다. 만약 나누어 떨어지는 요소가 없다면 -1을 반환해야하므로 answer 배열에 요소가 있는지 없는지에 따라 answer를 오름차순으로 정렬한 값이나 -1을 반환하도록 코드를 작성하였다.


다른 사람의 풀이

function solution(arr, divisor) {
    var answer = arr.filter(v => v%divisor == 0);
    return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}

나와 비슷한 코드인데 더 간결하다. parseInt를 사용하지 않고 그냥 %연산자를 사용하여 나누어떨어지는지 확인했고, answer에 -1을 담는 과정 없이 바로 [-1]을 반환하는 방법이다.


0개의 댓글