본문 바로가기
Coding Test Practice

N개의 최소공배수

by Whiimsy 2024. 4. 4.

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

💡 생각

최소공배수는 수들의 배수 중 공통이 되는 가장 작은 숫자이므로 배열에서 가장 큰 수보다 커야한다. 배열의 모든 수들로 나누어 떨어져야 한다. 배열의 마지막 수까지 나누어 떨어지는 경우 그 수를 리턴한다.

📖 내 코드

def solution(arr):
    _max = max(arr)
    while True:
        for i in range(len(arr)):
            if _max % arr[i] == 0:
                if i == len(arr) - 1:
                    return _max
            else:
                _max += 1
                break

📑 다른 사람의 풀이

from fractions import gcd

def solution(arr):
    answer = arr[0]
    for n in arr:
        answer = n * answer / gcd(n, answer)

    return answer

 

최대공약수, 최소공배수를 구하는 함수 자체가 있다.... 역시 파이썬
최대공약수를 구하는 함수가 gcd(Greateset Common Divisor)이고 최소공배수를 구하는 함수는 lcm(Least Common Multiple)이다. lcm 메서드는 파이썬 3.9x부터 지원된다는데 프로그래머스에서 지원하는 버전은 3.8버전이기 때문에 사용할 수 없다고 한다. fractions가 아니라 math에서 임포트한 gcd를 사용해도 된다.

 

from math import gcd

def solution(arr):
    answer = arr[0]
    for n in arr:
        answer = n * answer // gcd(n, answer)

    return answer