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 |