N개의 최소공배수 (python, javascript)

SeoYng·2020년 6월 29일
0

프로그래머스 문제 - N개의 최소공배수 LV2

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값 스킵)

profile
Junior Web FE Developer

0개의 댓글