728x90

문제


https://programmers.co.kr/learn/courses/30/lessons/12940?language=javascript 

 

코딩테스트 연습 - 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의

programmers.co.kr

 

코드


function solution(n, m) {
    const biggest = (a, b) => {
        if (b === 0) return a;
        return biggest(b, a % b); //재귀
    };
    const minimum = (a, b) => {
        return (a * b) / biggest(a, b);
    };
    return [biggest(n, m), minimum(n, m)];
}

 

후기


  • 우선 이 문제를 풀기 위해서는 유클리드 호제법에 대해 알아야 했다 (그래야 최대공약수를 구할 수 있다)
  • 최소공배수는 유클리드 호제법을 통해 얻은 두 수의 최대공약수를 통해 (a * b) / a, b의 최대공약수 를 통해 쉽게 얻을 수 있었다
  • 유클리드 호제법을 이해하는 데 살짝 시간이 걸렸지만 직접 쓰면서 하나하나 이해하고나니 쉬웠다

+ Recent posts