ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] Programmers N개의 최소공배수
    Algorithm 2023. 2. 6. 17:54
    728x90
    반응형

     

    - 목차

     

    문제 소개.

    문제 설명

    두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 

    제한 사항
    • arr은 길이 1이상, 15이하인 배열입니다.
    • arr의 원소는 100 이하인 자연수입니다.

     

    입출력 예
     
    [2,6,8,14] 168
    [1,2,3] 6

     

    문제 분석.

    최소공배수를 계산하기 위해서 최대공약수를 활용하는 것이 중요합니다.

    아래 계산식과 같이 최소공배수는 두 수의 곱에서 최대공약수를 나눈 것과 동일하기 때문이죠.

    $$ gcm(a, b) =  \frac{a \times b}{gcd(a,b)} $$

     

    Python 에서는 math 모듈의 gcd 함수를 사용하여 손쉽게 최대공약수 계산을 할 수 있습니다.

     

    문제 풀이.

    def solution(arr):
        import math
        gcm = arr[0] # 최소공배수
        for i in range(1, len(arr)):
            cur = arr[i]
            gcd = math.gcd(int(gcm), cur)
            gcm = gcm * cur / gcd
    
        return int(gcm)

     

     

    반응형
Designed by Tistory.