본문 바로가기
코딩테스트/LV. 1

LV. 1 :: 최대공약수와 최소공배수

by KUROMI98 2023. 1. 24.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

function solution(n, m) 
{
    var a = 0;
    var b = 0;
    
    for (i=2; i<=Math.min(n, m); i++)
    { // 분자와 분모의 최대공약수를 구해준다.
        if(n % i == 0 && m % i == 0)
        { //분자를 나눴을때도 분모를 나눴을때도 0이 되는 최소의 값은 얼마일까?
            a = i;
        }
    } 

    for (i=1; i<1000000; i++)
    { // 분자와 분모의 최소공배수를 구해준다.
        if(i % n == 0 && i % m == 0)
        { // 최소공배수는 n으로 나눠도 m으로 나눠도 나눠떨어지는 수들의 제일 작은 값이다.
            b = i;
            break; // 최소공배수니까, 하나 나오자마자 바로 종료해야된다.
            //  나오자마자 종료 안하면 최소값이 아닌 값이 나오게 된다
        }
    }
    
    if (a==0) {a=1;} // a가 0이 나왔다는건, n과 m이 서로소라는 것이다.
    
    return [a, b];
}

241021

function solution(n, m) {
    return [gcd(n,m), lcm(n,m)];
}

function lcm(a, b) {
    return (a * b) / gcd(a, b);
}

function gcd(a, b) {
    return b === 0 ? a : gcd(b, a % b);
}

'코딩테스트 > LV. 1' 카테고리의 다른 글

LV. 1 :: 이상한 문자 만들기  (0) 2023.01.27
LV. 1 :: 완주하지 못한 선수  (0) 2023.01.27
LV. 1 :: 문자열 다루기 기본  (0) 2023.01.24
LV. 1 :: 합성수 찾기  (0) 2023.01.24
LV. 1 :: 콜라츠 추측  (0) 2023.01.24

댓글