개발자 블로그

프로그래머스 - n개의 최소 공배수 본문

알고리즘/프로그래머스

프로그래머스 - n개의 최소 공배수

hayongwoon 2022. 5. 19. 18:24

문제 설명

더보기

N개의 최소공배수

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

제한 사항
  • arr은 길이 1이상, 15이하인 배열입니다.
  • arr의 원소는 100 이하인 자연수입니다.
입출력 예arrresult
[2,6,8,14] 168
[1,2,3] 6

 

나의 풀이

def gcd(a, b):
    while b > 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return a * b // gcd(a, b)

def solution(arr):
    b = 1
    while arr:
        a = arr.pop()
        answer = lcm(a, b)
        b = answer

    return answer

여러 개의 수의 최소공배수를 구하는 방법은 무작위로 두수의 최소 공배수를 구하고 거기서 나온 최소공배수를 다음 수와의 최소공배수를 고하는 식으로 이어나가면 된다. 

 

1) 최소 공배수 구하는 함수

 

2) 두개의 최소공배수와 다음 수와의 최소공배수를 구하는 식으로 코드 작성