티스토리 뷰

from math import gcd
def lcm(x,y):
    return x*y // gcd(x,y)

def solution(arr):
    # 숫자 두개씩을 lcm함수에 넣어서 반환받기
    answer = arr[0]*arr[1]//gcd(arr[0],arr[1])
    for i in range(2,len(arr)):
        answer = lcm(answer,arr[i])

    return answer

print(solution([2,6,8,14]))

파이썬은 gcd()함수가 있어서 최대 공약수를 자동으로 구해준다.

그래서 이것을 사용해야겠다고 생각했고 최소 공배수 = 두 숫자의 곱 / 최대 공약수 이기 때문에

맨 앞 두 숫자들을 먼저 뽑아서 그것들 끼리 최소 공배수를 구해줬다. -> 배열 0번째,1번째 것으로

그러고 여기서 나온 최소 공배수를 answer에 저장을 한다.

그리고 배열 2번째 숫자 부터는 앞서 구한 최소 공배수(answer)와 함께 다시 lcm()함수에 보내서 최소 공배수를 구한다.

이렇게 계속해서 최소 공배수를 반복문을 다 돌 때까지 구하면 된다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함