두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
function getGcd(a, b) {
if(b === 0){
return a;
}
return getGcd(b, a % b);
}
function solution(arr){
return arr.reduce((a, b) => (a * b) / getGcd(a, b));
}
유클리드 호제법을 응용해 최대공약수를 우선적으로 구하고, 이를 통해 최소공배수를 쉽게 구할 수 있습니다.
비효율적으로 문제를 풀었기에, 검색 후 가장 수행 속도가 빠른 식으로 정리하였습니다.