N개의 최소공배수 : 문제 링크
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미한다. 예를 들어 2와 7의 최소공배수는 14가 된다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 된다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성
제한 사항
- arr은 길이 1이상, 15이하인 배열이다.
- arr의 원소는 100 이하인 자연수이다.
유클리드 호제법
- a, b가 정수이고 a >= b라고하고, a를 b로 나눈 나머지를 r이라고 한다. 이때 a와 b의 최대공약수를 (a, b)라고 하면 (a, b) = (b, r)이 성립한다.
#include <vector>
using namespace std;
int gcd(int a, int b) {
if(a % b == 0) return b;
else return gcd(b, a % b);
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int solution(vector<int> arr) {
if(arr.size() == 1) return arr[0];
else {
int lcm_s = lcm(arr[0], arr[1]);
for(int i = 2; i < arr.size(); ++i) {
lcm_s = lcm(lcm_s, arr[i]);
}
return lcm_s;
}
}