티스토리 뷰

728x90
SMALL

처음 풀이

function solution(arr) {
    while(arr.length>2){
        arr.push(lcm(arr[0],arr[1]));
        arr.splice(0,2);
    }
    if(arr.length===2){
        return lcm(arr[0],arr[1]);
    }
}
function lcm(n1,n2){
    let num=1;
    while(!(num%n1===0 && num%n2===0)){
        num++;
    }
    return num;
}

유클리드 호제법 적용

function solution(arr) {
    while(arr.length>2){
        arr.push(arr[0]*arr[1]/gcd(arr[0],arr[1]));
        arr.splice(0,2);
    }
    if(arr.length===2){
        return arr[0]*arr[1]/gcd(arr[0],arr[1]);
    }
}
function gcd(n1, n2) {
  return n1%n2 ? gcd(n2, n1%n2) : n2;
}

리듀스 함수 사용

function solution(arr) {
    return arr.reduce((acc, cur) => acc * cur / gcd(acc, cur));
}
function gcd(n1, n2) {
  return n1%n2 ? gcd(n2, n1%n2) : n2;
}
728x90
LIST
댓글
공지사항