본문 바로가기
알고리즘 문제/프로그래머스_Lv1 도장깨기

[프로그래머스] 최대공약수와 최소공배수 (Javascript)

by 스코필 2024. 11. 25.

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12940

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 설명

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수를 완성하세요.

배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다.

제한 사항

  • 두 수는 1 이상 1,000,000 이하의 자연수입니다.

 

✅ Code - 성공

function solution(n, m) {
    let gcd = 1;    // 최대공약수
    while (n > 1 && m > 1) {
        let flag = false;
        for (let i = 2; i <= Math.min(n, m); i++) {
            if (n % i == 0 && m % i == 0) {
                gcd *= i;
                n /= i;
                m /= i;
                flag = true;
                break
            }
        }
        
        if (flag == false) break; 
    }
        
    return [gcd, gcd * n * m];
}