https://school.programmers.co.kr/learn/courses/30/lessons/12953
단순 계산
여러개의 수들에 대해서 최소 공배수를 구하는 방식은 크게 2가지 있다.
1. 공약수와 몫을 이용하는 방식
2. 최대값을 n배하며 모든 수로 나누어 지는지 확인하는 방식
1. 공약수와 몫을 이용하는 방식
1번 방식의 경우는 아래와 같다.
두 수의 최소 공배수를 과정으로 생각해보자
3x3x5x7로 구할 수 있다.
즉 모든 수를 공통적으로 나눌 수 있는 3x3과 마지막 몫인 5와 7을 곱하면 된다.
n개의 수가 있는경우에도 동일하게 접근하면 된다.
2. 최대값을 n배하며 모든 수로 나누어 지는지 확인하는 방식
최소 공배수라는 것이 생각해보면 결국 N개의 수의 배수이다.
따라서 N개 중 1개의 수를 K배 하다보면 언젠가 최소 공배수가 반드시 나온다.
이때, 최소값을 기준으로 한다면 연산의 수가 많아진다. 최대값을 기준으로 찾아보자.
import java.util.*;
class Solution {
int max;
public int solution(int[] arr) {
Arrays.sort(arr);
max = arr[arr.length - 1];
int weight = 1;
while(true){
int target = max * weight;
if(isOkay(max * weight, arr))
return max * weight;
weight++;
}
}
public boolean isOkay(int target, int[] arr){
for(int value : arr){
if(target % value != 0)
return false;
}
return true;
}
}