최대 1 분 소요

문제 링크

내 풀이

def solution(arr):
    min_gong = arr[0]
    for num in arr[1:]:
        for i in range(1, num+1):
            if min_gong % i == 0 and num % i == 0:
                max_yak = i
        min_gong = min_gong * num // max_yak
                
    return min_gong             

다른 풀이

def solution(arr):
    
    result = 1
    
    # arr에 대해 순회하면서 최소공배수 업데이트
    for i in arr:
        result = lcm(result, i)
        
    return result

# 최대공약수 구하는 함수
def gcd(x, y):
    
    while y:
        x, y = y, x%y
        
    return x

# 최소공배수 구하는 함수
def lcm(x, y):
    
    return x * y // gcd(x, y)
출처: https://1ets-just-do-it.tistory.com/134 [파이썬은 신이야🔥🔥🔥:티스토리]

풀이 해석

  • 유클리드 호제법을 이용한 최대공약수 도출
  • 두 수를 곱한 것에 최대공약수를 나눠주면 최소공배수

배울 점

  • 유클리드 호제법의 활용
  • 함수를 여러개 사용하여 호출

댓글남기기