[프로그래머스] 최대공약수와 최소공배수 (JavaScript)
ETC/코딩테스트 연습

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

문제 설명

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

제한사항

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

설명 더 보기

최대공약수와 최소공배수 (JavaScript)


문제 풀이

function solution(n, m) {
    const answer = [];
    
    // 최대공약수를 a로 지정
    let a;
    
    // n의 크기만큼 반복하는 반복문 생성
    for (let i = 0; i <= n; i++) {
    // n과 m을 나눴을 때, 나머지가 모두 0인 i를 찾아 가장 큰 수를 변수 a에 입력
        if (n % i === 0 && m % i === 0) {
            a = i;
        }
    }
    
    // 최소공배수를 b로 지정, n과 m의 곱셈 값을 최대공약수 a로 나눗셈
    let b = n * m / a;
    
    // 최대공약수 a와 최소공배수 b를 answer에 추가 및 답안 제출
    answer.push(a);
    answer.push(b);
    
    return answer;
}

if 문에 두 수의 최대공약수를 구하는 조건을 넣어 n과 m의 최대공약수를 먼저 찾고, 이후에는 {(n * m) / 최대공약수}라는 공식을 활용해 n과 m의 최소공배수를 찾은 뒤, 두 수를 배열에 넣어 제출하였다. 이미 알고 있는 수학적 개념과 공식을 어떻게 코드로 바꿔야 하는지에 대해 고민이 필요한 문제였다.