N개의 최소공배수

Whiimsy_dev·2022년 10월 15일
1

programmers

목록 보기
13/13
post-thumbnail

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

💡 생각

최소공배수는 수들의 배수 중 공통이 되는 가장 작은 숫자이므로 배열에서 가장 큰 수보다 커야한다. 배열의 모든 수들로 나누어 떨어져야 한다. 배열의 마지막 수까지 나누어 떨어지는 경우 그 수를 리턴한다.

📖 내 코드

def solution(arr):
    _max = max(arr)
    while True:
        for i in range(len(arr)):
            if _max % arr[i] == 0:
                if i == len(arr) - 1:
                    return _max
            else:
                _max += 1
                break

📑 다른 사람의 풀이

from fractions import gcd

def solution(arr):
    answer = arr[0]
    for n in arr:
        answer = n * answer / gcd(n, answer)

    return answer

최대공약수, 최소공배수를 구하는 함수 자체가 있다.... 역시 파이썬
최대공약수를 구하는 함수가 gcd(Greateset Common Divisor)이고 최소공배수를 구하는 함수는 lcm(Least Common Multiple)이다. lcm 메서드는 파이썬 3.9x부터 지원된다는데 프로그래머스에서 지원하는 버전은 3.8버전이기 때문에 사용할 수 없다고 한다. fractions가 아니라 math에서 임포트한 gcd를 사용해도 된다.

from math import gcd

def solution(arr):
    answer = arr[0]
    for n in arr:
        answer = n * answer // gcd(n, answer)

    return answer

0개의 댓글