https://programmers.co.kr/learn/courses/30/lessons/12953
문제설명
n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
여러수의 최소공배수를 구하는 문제.
입출력 예
[2,6,8,14] => 168
[1,2,3] => 6
솔루션
여러수의 최소공배수는 앞에서부터 두개의 수를 최소공배수로 리턴하는 방식으로 구할 수 있다.
[2,6,8,14] => [6, 8, 14] => [24, 14] => [168]
코드
최소공배수 구하는 법 참고
최대공약수, 최소공배수 구하기
# 파이썬
from fractions import gcd # 모듈사용
'''
def gcd(a, b): => 속도 조금더 빠름
return a if b == 0 else gcd(b, a % b)
'''
def solution(arr):
while len(arr) > 1:
n, m = arr.pop(), arr.pop()
arr.append(n*m // gcd(n, m))
return arr.pop()
// 자바스크립트
function solution(arr) {
// 최대공약수 구하기
const gcd = (a, b) => b ? gcd(b, a % b) : a;
// reduce 사용 2 => 6 => 24 => 168
return arr.reduce((a, b) => a * b / gcd(a, b))
}
reduce 함수를 사용하면 유용하다.
초기값을 설정하지 않으면 배열의 첫번째값이 initialValue로 들어가게 되어 이 문제에서는 설정할 필요가 없다. (currentValue값 스킵)