Moon Work

[프로그래머스] N개의 최소공배수_연습문제 본문

알고리즘

[프로그래머스] N개의 최소공배수_연습문제

moonkey 2022. 6. 4. 21:56

N개의 최소공배수_연습문제

문제 설명

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

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

풀이

주어진 배열의 가장 작은 값부터 최대 공배수 사이를 돌면서 모든 arr의 값으로 나눠지는 수가 있다면 반복문을 종료하고 값을 리턴하는 방식으로 최소 공배수를 찾아냈다. 

function solution(arr) {
    let answer;
    let maxCommonMultiple = arr.reduce((sum,value)=>sum*value);
    arr.sort(function(a,b){
        return a-b;
    })
    const startNum = arr[arr.length-1];
    function checkMultiple(arr, num, origin){
        for(let i=0;i<arr.length;i++){
            if(num%arr[i]!==0){
                return false;
                
            }
            if(i === arr.length-1){
                answer = num;
                return true;
            }
        }
    }
    for(let i=startNum;i<=maxCommonMultiple;i++){
        if(checkMultiple(arr,i)){
            break;
        }
    }
    return answer;
}