문제
풀이 코드
const calcuGCD = (n, m) => {
return n % m == 0 ? m : calcuGCD(m, n % m);
};
function solution(arr) {
let gcd = calcuGCD(arr[0], arr[1]);
let lcm = (arr[0] * arr[1]) / gcd;
for (let i = 2; i < arr.length; i++) {
gcd = calcuGCD(lcm, arr[i]);
lcm = (lcm * arr[i]) / gcd;
}
return lcm;
}
풀이 과정
여러 수의 최소공배수를 구하는 방법은 다음과 같다.
1. A 와 B 의 최소공배수를 구한다.
2. 1의 최소공배수와 C의 최소공배수를 구한다.
3. 2의 최소공배수와 D의 최소공배수를 구한다.
4 ... 반복한다
이렇게 하면 N개 수의 최소공배수를 구할수 있다.
최소 공배수를 구하기 위하여
유클리드 호제법을 이용한 최대 공약수 계산 함수를 생성하고,
인덱스 0 과 1 의 최소공배수를 우선 구한후,
다음 인덱스의 수들과 의 최소공배수를 구하도록 하였다.
다른사람의 풀이
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
}
할말을 잃었다.
풀이가 너무 간단하게 나왔다