어제의 나보다 성장한 오늘의 나

[프로그래머스][Level2][Java] N개의 최소공배수 본문

알고리즘/프로그래머스(Programmers)

[프로그래머스][Level2][Java] N개의 최소공배수

NineOne 2021. 4. 2. 19:57

 

https://programmers.co.kr/learn/courses/30/lessons/12953

 

코딩테스트 연습 - N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배

programmers.co.kr

import java.io.*;
import java.util.*;

class Solution {
    public int solution(int[] arr) {
        int min = arr[0];
        
        for(int i=1; i<arr.length; i++) {
        	min = (min * arr[i]) / gcd(Math.max(min, arr[i]), Math.min(min, arr[i]));
        }
        return min;
    }
    
	static int gcd(int max, int min) {	
		while(min!=0) {
			int remainder = max%min;
			max =min;
			min = remainder;
		}
		return max;
	}
}

📝 정리

  1. 유클리드 호제법으로 최대공약수를 구한다.
  2. 최대 공배수 = 두수의 곱 / 두수의 최대공약수 이다.
  3. 1부터 N개까지 반복한다.
Comments