본문 바로가기

프로그래머스/구현

[구현] 프로그래머스 '최대공약수와 최소공배수' - js

반응형

1. 문제

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

 

프로그래머스

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

programmers.co.kr

2. 설명

최대공약수:

공약수를 넣을 빈 배열 a를 선언해준다.

1부터 n까지, n과 m 둘 다 나누었을 때 나머지가 0이 되는 n과 m의 공약수를 찾아 a에 push한다.

최대공약수는 공약수 중 가장 큰 수를 말하므로, a[a.length-1]값을 리턴할 배열인 answer에 push해준다.

최소공배수:

문제에 두 수는 1이상 1000000이하의 자연수라고 나와있으므로, 

m부터 1,000,000까지 n과 m 둘 다 나누었을 때 나머지가 0이되는 첫번째 j가 n과 m의 최소공배수를이므로,

조건을 만족하는 j가 나오면 answer에 push해준 후, break를 통해 반복문을 빠져나온다.

3. 코드

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