[Programmers]-N개의 최소공배수

문제

문제

배열의 모든 원소들의 최소공배수를 반환하는 문제이다.

코드

class Solution {
    public int solution(int[] arr) {
        int answer = arr[0];
        
        for(int i=0;i<arr.length-1;i++){
            answer = lcm(answer,arr[i+1]);
        }//두수의 최공배수를 answer에 넣고 다음 배열값과 비교한다
        return answer;
    }
    
    public int gcd(int a, int b){//최대공약수
        while(b != 0){
            int r = a%b;
            a = b;
            b = r;
        }
        return a;
    }
    public int lcm(int a, int b){//최소공배수
        return (a*b)/gcd(a,b);
    }
}

코드 설명

처음 구한 최소공배수를 lcm함수에 다시 넣어 최소공배수를 구한다.

요약

  • 두수를 곱하고 최대공약수로 나누면 최소공배수를 구하는 공식이다.
  • 최대공약수를 구할 때 유클리드 호제법을 이용하면 빠르고 쉽게 구한다.