[Python][프로그래머스][Level2] N개의 최소공배수

[Python][프로그래머스][Level2] N개의 최소공배수

코드

def solution(arr):
    answer=1
    for num in arr:
        cnt=1
        while True:
            for x in range(2,max(answer,num)):
                if answer%x==0 and num%x==0:
                    answer//=x
                    num//=x
                    cnt*=x
                    break
            else:
                break
        answer*=num*cnt
    return answer

최소공배수는 최대공약수*(각 숫자들을 공약수로 나눈 몫) 이다.

따라서 arr에 들어있는 수를 차례로 반복문으로 돌면서

최소공배수로 만드는 answer 와 겹치는 수가 있는지 확인한다.

겹치는 수가 있을 경우 해당 수는 answer에 곱할 필요가 없기 때문에

건너뛰고 answer에 없는 수만 곱해준다.

Discussion and feedback