Algorithm/Javascript

[Programmers] N개의 최소공배수 - JavaScript

2Ju0 2023. 4. 28. 19:47

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

내 풀이

function getGCD(a, b) {
    let gcd = 1;
    
    if(a % b === 0) gcd = b;
    else if(b % a === 0) gcd = a;
    else{
        for(let i = 2; i <= Math.min(a, b); i++){
            if(a % i === 0 && b % i === 0) gcd = i;
        }
    }
    return gcd;
}

function solution(arr) {
    while(arr.length !== 1){
        let a = arr.shift();
        let b = arr.shift();
        let gcd = getGCD(a, b);
        
        if(gcd === 1) arr.push(a * b);
        else arr.push(a * b / gcd);
    }
    return arr.shift();
}

arr의 앞에서 부터 두 개씩 최소공배수를 구하는 방식으로 구현했다. 이때, 최소공배수는 두 수의 최대공약수를 활용하여 구하도록 했다. 소인수분해를 생각하면 쉽다.