(Python, Java) 프로그래머스 - 최대공약수와 최소공배수

[문제 링크]

Python 풀이

import math

def solution(n, m):
    gcd = math.gcd(n, m)
    answer = [gcd, n * m // gcd]

    return answer

전형적인 수학문제로 그다지 영양가가 있는 문제는 아닌 것 같다.
math 라이브러리에 gcd를 이용하면 최대 공약수를 구할 수 있고 원래 lcm을 이용하면 최소 공배수를 구할 수 있다.
하지만 lcm 사용을 막아논 것 같다.
두 수의 곱을 최대 공약수로 나누면 최소 공배수를 얻을 수 있다.

Java 룰이

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        BigInteger gcd = BigInteger.valueOf(n).gcd(BigInteger.valueOf(m));
        answer[0] = gcd.intValue();
        answer[1] = (n * m) / gcd.intValue();
        return answer;
    }
}

© 2021. By Backtony