https://school.programmers.co.kr/learn/courses/30/lessons/12953
소인수분해를 이용해서 문제를 풀었는데 시간 초과가 되었다..
나무 위키에서 최소 공배수에 관한 내용을 읽다보니
https://namu.wiki/w/%EC%B5%9C%EC%86%8C%EA%B3%B5%EB%B0%B0%EC%88%98
최대공약수(gcd)를 이용하는 방법도 있더라..
import java.util.*;
class Solution {
public int solution(int[] arr) {
int answer = arr[0];
if (arr.length == 1) return answer;
for (int i = 1; i < arr.length; i++) {
answer = lcm(answer, arr[i]);
}
return answer;
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int gcd(int a, int b) {
int gt = a > b ? a : b;
int lt = a > b ? b : a;
int rest = gt % lt;
if (rest == 0) {
return lt;
}
return gcd(lt, rest);
}
}
사실상 수학 문제인가..?