프로그래머스 - N개의 최소공배수

ironcat·2022년 3월 12일
0

알고리즘

목록 보기
12/17

알고리즘 문제풀이

문제 링크

# 최대 공약수 : 두 수의 나머지가 0이 될 때까지 재귀
def gcd(num1, num2):
    if num1 % num2 == 0:
        return num2
    if num1 % num2 != 0:
        return gcd(num2, num1 % num2)

# n개의 최대공약수 구하는 방법
# 두 수의 최대 공약수를 구한 뒤 계속 반복
def multiple_gcd(arr):
    tmp = arr[0]
    for idx in range(1, len(arr)):
        tmp = gcd(tmp, arr[idx])
    return tmp

# 최소 공배수 : 두 수의 곱을 최대공약수로 나눔
def lcm(max, min, gcd):
    return (max * min) / gcd

# n개의 최소공배수 구하는 방법
# 두 수를 곱한 뒤 최소 공약수로 나누는 것을 계속 반복
def multiple_lcm(arr):
    answer = arr[0]
    for num in arr:
        answer = answer * num // gcd(answer, num)
    return answer

def solution(arr):
    answer = multiple_lcm(arr)
    return answer
profile
공부하는 블로그

0개의 댓글