https://programmers.co.kr/learn/courses/30/lessons/12953
//최대공약수
function twoMax(a, b){
let L=0;
const min=a<b? a:b;
for(let i=1; i<=min; i++){
if(a%i===0 && b%i===0) L=i;
}
return L;
}
//최소공배수
function solution(arr) {
return arr.reduce((a,b) => (a*b) / twoMax(a,b), 1);
}
예전에 푼 최소공배수와 최대공약수 문제를 풀었으면 쉬운 문제이다. 나도 처음에는 이 문제풀이 방식으로 접근했는데, (두수의 곱=최대공약수*최소공배수
) 안풀려서 왜지? 생각했는데 '두수'의 곱임을 간과했다. 이 문제에서는 [2,6,8,14]와 같이 수가 여러개가 나오는데, 처음에는 전체 다 곱해버렸다. 따라서 두수씩곱해서 구해야한다. 공식이 두수의 곱임을 기억하자.
그리고 함수를 twoMax함수를 solution안에 넣어도 되고, 밖에 빼도 된다.
reduce를 통해 누적 곱도 구할수 있구나! "누적"이라면 합이 아니더라도 이런식으로도 활용할 수 있다는걸 기억하자.
10/27