Programmers/Lv2

[프로그래머스/JS] N개의 최소 공배수 (Lv2) / 유클리드 호제법

hellosonic 2023. 8. 4. 19:40

문제요약

나의 코드 및 설명

  • 두 수의 최소공배수는 [두 수의 곱 / 최대공약수] 이다.
  • 따라서 최대공약수를 먼저 구하면 되는데 유클리드 호제법을 활용해서 구현하면 된다.
// cf) 최대공약수를 구하는 코드
function getGcd(a, b) {
    if (b == 0) return a;
    return getGcd(b, a%b);
}

function solution(arr) {
    var answer = 0;
    
    var gcd = arr.reduce((a,b) => getGcd(a,b));
    console.log(gcd); // 최대공약수가 출력됨
    
    answer = arr.redce((a,b) => (a*b) / getGcd(a,b));
    console.log(answer); // 최소공배수가 출력됨
    
    return answer;
}

피드백

유클리드 호제법을 활용하여 최대공약수를 구하고, 최소공배수는 두 수의 곱에서 최대공약수를 나눈 값이라는 것을 활용하여 문제를 해결할 수 있었다. 자바스크립트의 reduce()함수는 참 편하고 재밌는 것 같다.