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

문제 설명

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.

 

제한 사항

  • arr은 길이 1 이상, 15 이하인 배열입니다.
  • arr의 원소는 100 이하인 자연수입니다.

입/출력


풀이

from fractions import gcd # gcd 라이브러리 호출
def solution(arr):
    answer = 0
    while len(arr) > 1:
        n,m = arr.pop(),arr.pop() 
        arr.append(n*m // gcd(n,m))
    return arr.pop()

 

채점


느낀 점

유클리드 호제법

 

유클리드 호제법 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란

ko.wikipedia.org

을 참고하면서 풀면 편하다 . arr의 배열에서 pop 하여 첫 번째 값과 두 번째 값의 최소공배수를 구한 후 그 수에 다시 최소 공배수를 적용하면서 풀어 나가면 문제가 해결된다.

<