공부/Code Cata
N개의 최소 공배수
동그래님
2025. 2. 4. 10:44
https://school.programmers.co.kr/learn/courses/30/lessons/12953
📌 최소 공배수 계산 공식
최대 공배수 == 두 수의 곱을 최대 공약수로 나눈 값이다.
int lcm(int x, int y) { return x * y / gcd(x, y); }
✅ 문제 풀이
#include <vector>
using namespace std;
int gcd(int x, int y) { return x % y == 0 ? y : gcd(y , x % y); }
int lcm(int x, int y) { return x * y / gcd(x, y); }
int solution(vector<int> arr)
{
int answer = arr[0];
for(int i = 1; i < arr.size(); ++i)
{
answer = lcm(answer, arr[i]);
}
return answer;
}
x, y 두 수의 모듈러 값은 작은 숫자의 최대 공약수와 같다는 성질을 이용해 최대 공약수를 구하는 함수 gcd 정의하였다.
최대 공약수가 구해진다면 최소 공배수는 간단히 x, y 두 수를 곱한 값에 나눠주면 구할 수 있게 된다.
유클리드 알고리즘
유클리드 알고리즘두 정수의 최대공약수(GCD, Greatest Common Divisor)를 구하는 효율적인 방법이다. 기본 원리는 두 수의 최대공약수는, 두 수의 모듈러 값과 작은 숫자의 최대 공약수와 같다는 성질
dong-grae.tistory.com