n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해주세요.

  1. 유클리드 호제법을 활용한 최대공약수를 구하는 함수를 작성하고,
  2. 이를 바탕으로 최소공배수를 구하는 함수를 작성한 뒤
  3. 입력받은 arr의 원소 2개씩 골라 적용시켜가면서 하나의 최소공배수를 만들어내고 리턴한다.
def solution(arr):
    answer = 0
    
    # 1. 최대공약수를 구하는 함수
    def getGcd(a,b):
        c = max(a,b)
        d = min(a,b)
        
        while True:
            if c%d == 0:
                break
                
            c,d = d, c%d
            
        return d
    # 2. 최소공배수를 구하는 함수
    def getLcm(a,b):
        return a*b//getGcd(a,b)
    
    while True:
        arr.append(getLcm(arr.pop(),arr.pop())) # 3. 함수 적용시키며 하나로 모아주기!
        
        if len(arr)==1: # 하나일 때 break!
            break
            
    answer = arr[0]
        
    
    return answer
profile
Frontend Developer, JamStack, Ethereum

0개의 댓글