최대 1 분 소요

문제 내용

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.

제한 사항

arr은 길이 1이상, 15이하인 배열입니다.
arr의 원소는 100 이하인 자연수입니다.

풀이 과정

처음에는 받은 배열 전체의 최대 공약수를 구한 다음, 다 나눠 버린 다음에 최대 공약수를 곱하는 방식으로 문제를 풀려고 했다.
처음 예제 케이스는 풀렸으나 해당 방법은 어디선가 오류가 생긴 것인지 찾지 못해서 하나하나 비교하며 문제를 풀어가는 방법으로 전환하게 되었다.
answer를 1로 만든 다음 배열을 순회하면서 최소 공배수를 구하는 걸 반복했으니 나중에 케이스가 많아지더라도 문제는 없을 것으로 보인다.

해결 코드

//최대 공약수를 구하기
function gcd(a,b)
{
    while(b>0)
    {
        let temp = b;
        b = a % b;
        a = temp;
    }

    return a;
}

function lcm(a,b)
{
    return (a * b) / gcd(a,b);
}

//최소 공배수를 구하기


function solution(arr) {
    var answer = 1;
    for(let i = 0;i<arr.length;i++)
    {
        answer = lcm(answer, arr[i]);
    }
    
    return answer;
}