문제

 

풀이 코드

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
}

할말을 잃었다.

풀이가 너무 간단하게 나왔다

+ Recent posts