문제
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다.
예를 들어 2와 7의 최소공배수는 14가 됩니다.
정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다.
n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한사항
arr은 길이 1이상, 15이하인 배열입니다.
arr의 원소는 100 이하인 자연수입니다.
입출력 예 설명
접근
두수의 최대공약수는 두수를 곱하고 최대 공약수로 나눠주는 식으로 구할수 있다
이때 파이썬의 math모듈의 gcd를 사용하면 최대공약수를 구할수 있다.
math모듈의 gcd의 사용법은 두 수를 인수로 넣으면 두수의 최대공약수를 구해준다(숫자 3개를 넣어도 된다.)
(개인적인 의견으로는 직접 gcd같은것을 구현하는 것도 좋지만,
이미 구현되어있는 것을 미리 알고 있다가 이용해서 빠르게 풀어내는것도 하나의 방법이라고 생각한다.)
주어진 배열의 첫번째 값을 뽑아서 2개씩 비교하는 값을 이용했다.
소스코드
import math
def solution(arr):
answer = arr[0]
for i in arr:
answer = (answer*i)//math.gcd(answer,i)
return answer
결과
'알고리즘' 카테고리의 다른 글
[프로그래머스 - Level 2] 카펫 (0) | 2021.11.08 |
---|---|
[프로그래머스 - Level 2] 구명보트 (0) | 2021.11.08 |
[프로그래머스 - Level 2] 올바른 괄호 (0) | 2021.11.03 |
[프로그래머스 - Level 2] 땅따먹기 (0) | 2021.10.29 |
에라토스테네스의 체 (0) | 2021.10.26 |