코딩 테스트/test_javaScript

[코딩테스트/javaScript] 최대공약수와 최소공배수

ijooha 2025. 1. 1. 13:03

function solution(n, m) {
    let answer = [];
    
    // 최대공약수
    for (let i=n; i<=n; i--) {
        if (n%i == 0 && m%i == 0) {
            answer.push(i); break;
        }
    }
    // 최소공배수
    for (let j=1; j<=n*m; j++) {
        if (j%n == 0 && j%m == 0) {
            answer.push(j); break;
            }
    }
    return answer;
}

우선 최대공약수는 n,m 중 작은 수만큼만 확인하면 돼서, i의 크기를 둘중 아무거나로 지정했다.

n과 m의 차가 어마무시하다면 시간이 오래 걸리기 때문에 비교까지 해준 다음에 더 작은 수로 정확히 넣었을듯

그리고 최대를 찾는 거기 때문에 하나씩 빼주는 형태로 반복했고,

n과 m의 공통된 약수일 때 break를 걸어 가장 큰 약수 하나만 추출하도록 했다.

 

최소공배수도 마찬가지.

최소니까 1부터 시작했고, 최대치로 커봤자 n*m이니까 조건을 그렇게 걸었다.

if 조건문에 부합하면 break 걸어서 제일 작은 공배수 추출