N개의 최소공배수

Seongjin Jo·2023년 7월 15일
0

프로그래머스 LV2

목록 보기
18/28

문제

풀이

import java.util.*;
class Solution {
    
    // 최대공약수를 구하는 함수 = 나머지가 0이 남는 수
    public static int gcd(int a, int b){
        if(a%b==0) return b;
        return gcd(b,a%b);
    }
    
    // 최소공배수를 구하는 함수
    public static int lcm(int a,int b){
        return (a*b) / gcd(a,b);
    }
    
    public int solution(int[] arr) {
    	Arrays.sort(arr);
        int answer = arr[0];
        // 최소공배수 각 요소들의 배수가 공통이되는 수
        for (int i = 1; i < arr.length; i++) {
            answer = lcm(answer, arr[i]);
        }
        return answer;
    }
}

최소공배수를 구하는 방법.
1. 두 수를 비교하면서 최대공약수 즉, 나눳을 때 나머지가 0이되는 수를 구한다.
2. 최소공배수 함수와 최대공약수를 구하는 함수 gcd,lcm을 만든다.
3. 최소공배수 함수에서 gcd을 호출하고 두 수를 곱해준 상태에서 두 수의 최대공약수를 나눠주면 최대공배수가 된다.
4. 이 과정을 배열 끝까지 반복한다.

0개의 댓글