function findGCD(a, b) {
return b === 0 ? a : findGCD(b, a % b);
}
function findLCM(a, b) {
return (a * b) / findGCD(a, b);
}
function solution(arr) {
var lcm = arr[0];
return arr.reduce((lcm, num) => findLCM(lcm, num), arr[0]);
return lcm;
}
GCD (최대공약수)
LCM (최소공배수)
reduce
lcm 누적된 값 초기값은 배열 첫번째 요소 arr[0]
num은 배열의 각 요소를 나타낸다
현재까지의 누적된 값 lcm과 배열의 각 요소 num의 최소공배수 계산
다른 풀이
function nlcm(num) {
return num.reduce((a,b) => a*b / gcd(a,b))
}
function gcd(a, b) {
return a % b ? gcd(b, a%b) : b
}
num.reduce ...
최소 공배수 계산
각 단계에서 a,b는 배열의 연속된 두 요소를 나타낸다
function solution(arr) {
return arr.reduce((acc, cur) => {
const recursive = (min, max) =>{
return (min % max) === 0 ? max : recursive(max, min % max);
}
let max = 0;
return acc*cur / recursive(acc,cur);
});
}
recursive
최대공약수 계산
reduce
함수 내부에서 각 요소에 대한 최소 공배수 계산, 결과가 다음 단계로 누적되지 않고 새로운 최소 공배수 갱신