FrontEnd/프로그래머스

[JS] N개의 최소공배수

728x90

유클리드 호제법을 활용한 최소공배수 구하는 방식으로 해결하였다.

 

 

간단하게만 설명하자면

 

 

24, 18 두개의 최소공배수를 구하기 위해서는 우선 최대공약수를 구해야한다.

 

 

24 % 18 => 6

18 % 6 = 0

 

 

이런방식으로

 

a % b = c

b % c  = d

d % e = f

...

 

 

해서 나머지가 0일때까지 나눠주면 되는데

 

 

이때 0으로나올때의 마지막 값이 최대공약수이다.

 

 

최소공배수는 두자연소의 곱 * 최대공약수를 하면 나온다.

 

 

 

 

 

 

function solution(arr) {
    const getGCD = (a,b) => {
        if (a%b===0) return b
        return getGCD(b,a%b)
    }
    const getLCM = (a,b) => a*b/getGCD(a,b)
   
    return arr.reduce((a,c) => getLCM(a,c),1)
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 하노이의 탑  (0) 2023.07.22
[JS] N-Queen  (0) 2023.07.21
[JS] 배달  (0) 2023.07.19
[JS] 짝지어 제거하기  (0) 2023.07.18
[JS] 점프와 순간이동  (0) 2023.07.17