문제에서 주어진 배열의 수를 2개씩 묶어 누적하여 최소공배수를 구하면 된다.
최대공약수(GCD)를 구하는 유클리드 호제법 함수는 기억해두면 유용하다. 이 문제에서 최소공배수를 구할 때, 두 수를 곱한 후 최대공약수로 나눈다.
해당 리턴값과 다음 배열값을 이용해 반복적으로 최소공배수를 구하면 된다.
#include <vector>
#include <iostream>
using namespace std;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int solution(vector<int> arr) {
int answer = arr[0];
for (int i = 1; i < arr.size(); i++) {
answer = lcm(answer, arr[i]);
}
return answer;
}