[프로그래머스] Lv.1 최대공약수와 최소공배수

Miro·2022년 8월 5일
0
post-thumbnail

프로그래머스 Lv.1 최대공약수와 최소공배수

문제, 제한사항, 입출력

나의 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function solution(n, m) {
    let answer = [];
    let gcd_num = 0;
    let lcm_num = 0;
    
    if(n > m) {
        [n, m] = [m, n];
    }
    
    for(let i = 1; i <= n; i++) {
        if(n % i === 0 && m % i === 0) {
            gcd_num = i;
        }
    }
    
    lcm_num = n * m / gcd_num;
    
    answer.push(gcd_num);
    answer.push(lcm_num);
    
    return answer;
}
cs

나는 n이 작은수라고 생각하고 반복문을 만들 예정이기 때문에 만약 nm보다 큰 수라면 두 변수에 할당된 수를 swap한다.

반복문을 i가 1부터 n까지 반복한다.

만약 ni로 나눈 나머지가 0이고, mi로 나눈 나머지가 0이라면 최대공약수를 담을 변수 gcd_numi를 할당해준다.

최소공배수는 두 수의 곱에 최대공약수를 나눠주면 나온다.

따라서 nm을 곱해서 gcd_num으로 나눠준 값을 최소공배수를 담을 변수 lcm_num에 할당해준다.

answergcd_numlcm_num을 차례대로 push 해준다.

profile
프론트엔드 개발자(진)

0개의 댓글