[프로그래머스 | Javascript] 코딩테스트 Lv1 - 최대공약수와 최소공배수

✔문제 설명

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


✔입출력 예

n                                           m                                                        return

3 12 [3, 12]
2 5 [1, 10]

✔나의 풀이

function solution(n, m) {
    const array_a = [];
    const array_b = [];
    for(let i=1;i<=n;i++){
        if(n%i===0){
            array_a.push(i)
        }
    }
    for(let i=1;i<=m;i++){
        if(m%i===0){
            array_b.push(i)
        }
    }
    const max = array_a.filter((item,index)=>{
        return array_b.includes(item)
    });
    var a=max[max.length-1]
    return ([max[max.length-1],(n*m)/a])
}

 

각각의 빈 배열에 n의 약수와 m의 약수를 넣어줬다.

max 변수에는 filter함수를 써서 공통 약수를 가지고 있는것만 추출했다.

공통 약수들 중에서 최대공약수는 배열 마지막에 저장되어 있다.

최소공배수는 n과m의 곱을 최대 공약수로 나누면 나온다.