[JS] 프로그래머스 - 최대공약수와 최소공배수

Updated:

문제

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

제한 조건

  • 두 수는 1이상 1000000이하의 자연수입니다.

나의 풀이

solution = (n, m) => {
    const answer = [];

    const arr1 = measure(n);
    const arr2 = measure(m);
    const fillter = arr1.filter((item) => arr2.indexOf(item) > -1);

    answer[0] = Math.max.apply(null, fillter);
    answer[1] = n * m / answer[0];
    return answer;
}

measure = n => {
    const arr = [];
    let num = 0;
    for (let i = 1; i <= n; i++) {
        if (n % i === 0) {
            arr[num] = i;
            num++;
        }
    }
    return arr;
}

test('최대공약수와 최소공배수', () => {
    expect(solution(3, 12)).toEqual([3, 12]);
    expect(solution(2, 5)).toEqual([1, 10]);
})


Tags:

Categories:

Updated:

Leave a comment