[Programmers] 최대공약수와 최소공배수 (JS)

gyu716625·2020년 9월 16일
0

Algorithm

목록 보기
10/13
post-thumbnail

문제

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

입출력 예

nmreturn
312[3, 12]
25[1, 10]

접근

최대공약수는 유클리드 호제법으로 접근하면 쉽게 풀 수 있다. 최소 공배수는 두 수의 곱에서 최대공약수로 나누어주면 구할 수 있다.

유클리드 호제법 reference

풀이

function solution(n, m) {
    var answer = [];
    var maxmul = 1;
   
    // 최대 공약수 -> 유클리드 호제법
    let gcd = function(a, b){
        console.log('a,b: ',a,b)
        if(!(a % b)){
            minmul = b;
            return ;
        }
        gcd(b, a % b);
    }
    gcd(n,m);
    answer.push(minmul, n * m / minmul);
    
    return answer;
}
profile
안정성, 확장성 있는 서버를 구축하고 가꾸는 것을 목표로 공부하고 있습니다. 🤔🤔🤔🤔 부족하기에 맞지 않는 내용이 있을 수 있습니다. 과감없이 피드백 해주시면 정말 감사하겠습니다..🙏

0개의 댓글