mun dev

[Programmers] N개의 최소공배수 자바(Java) 본문

알고리즘/프로그래머스

[Programmers] N개의 최소공배수 자바(Java)

mndev 2023. 4. 24. 11:47

문제설명

두 수의 최소공배수(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]  

 

 

통과한 코드

import java.util.*;
class Solution {
    public int solution(int[] arr) {
        int answer=0;
        int idx=1;
        Arrays.sort(arr);
        
        while(true){
            int num=arr[arr.length-1]; // n개의 배열 중 가장 큰 값을 기준으로 최소공배수 찾기
            num*=idx;
            idx++;
            
            if(lcm(arr,num)==true){
                answer=num;
                break;
            }
        }  
        
        return answer;
    }
    
    public boolean lcm(int[] arr, int num){
        int cnt=0;
        
        for(int i=0; i<arr.length; i++){
            if(num%arr[i]==0){ // 배열에 있는 원소들이 num으로 나누어진다면 cnt++
                cnt++;
            }
        }
        
        if(cnt==arr.length) return true;
        return false;
    }
}