본문 바로가기
[Python] Programmers/Level2

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

by 파크영 2021. 7. 15.

문제 설명

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

 

제한 사항

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

 

입출력 예

arr result
[2,6,8,14] 168
[1,2,3] 6

나의 풀이

[Python(파이썬)]

def lcm(n,m):
    import math
    return int(n*m / math.gcd(n, m))

def solution(arr):
    numlcm = 1
    for i in range(len(arr)):
        numlcm = lcm(numlcm, arr[i])
    return numlcm

학습한 내용

 

오늘 내용은 Level1에서 많이 다뤘던 최소공배수 문제라서 비교적 간단하게 풀었다. 

풀이과정
1. gcd - 최대공약수 구하기
2. lcm - 최소공배수 구하기
3. N개의 최소 공배수 구하기

 

1. gcd - 최대 공약수 구하기

따로 함수를 구할 수도 있지만 파이썬 math에는 gcd를 제공하기 때문에 이를 이용했다. 

import math
math.gcd(n,m)

 

2. lcm - 최소 공배수 구하기

 

LCM = n * m /  최대공약수 = n * m / gcd(n, m))

int(n*m / math.gcd(n, m))

 

3. N개의 최소 공배수 구하기

for문을 이용해서 1, arr[0]의 최소공배수를 구하고 그 최소공배수와 arr[1], 이와 같은 식으로 반복해서 arr[-1]까지 구해갔다. 


문제 출처

 

코딩테스트 연습 - N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배

programmers.co.kr

 

댓글