두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한 사항
arr은 길이 1이상, 15이하인 배열입니다.
arr의 원소는 100 이하인 자연수입니다.
최대공약수(GCD)를 구하는 유클리드 호제법
나머지 값이 0이 될때의 b값인 2가 최대공약수
최소공배수는 두 자연수의 곱 / 최대공약수
Sol)
N개의 숫자들의 최소 공배수를 구하기 위해서 각각 숫자들을 돌아가면서 최소 공배수를 구하는 방식으로 구현하였다.최소공배수는 두 자연수의 곱에 최대공약수를 나누어주면 구할 수 있다.따라서 최대공약수를 구하는 함수 gcd와 이를 이용해 최소공배수를 구하는 함수 lcm을 정의하였다.
def gcd(a, b):
"""최대공약수"""
if a % b == 0:
return b
return gcd(b, a % b)
def lcm(a, b):
"""최소공배수"""
return a * b / gcd(a, b)
def solution(arr):
answer = arr[0]
for num in arr:
answer = lcm(num, answer)
return answer