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

나의 풀이

def gcd(a, b):
    a, b = min(a, b), max(a, b)
    if b % a == 0:
        return a
    while b % a != 0:
        temp = b % a
        b, a = a, temp
    return a

def solution(arr):
    answer = arr[0]
    for i in range(1, len(arr)):
        answer = (answer * arr[i]) // gcd(answer, arr[i])
    return answer
  • 0번째 인덱스와 1번째 인덱스의 최소 공배수를 구하고 이 최소 공배수 값과 다음 인덱스에 해당하는 숫자의 최소공배수를 구하는 과정을 반복하는 방식으로 접근하였다.
  • 최소 공배수를 구하기 위해 최대 공약수를 구하는 함수를 작성하였다.
  • answer = arr[0]으로 세팅한다.
  • 인덱스 1부터 배열을 다 돌때까지 answer와 arr[i]의 최소 공배수를 구해준다. 해당 최소공배수를 answer에 담아두고 다시 answer와 그 다음 인덱스의 숫자의 최소 공배수를 구해준다.

0개의 댓글