반응형
출처: https://www.acmicpc.net/problem/1934
Approach
두 수가 주어지면 최소공배수(Least Common Multiple, LCM)를 구하는 문제이다.
문제에서 설명한대로 최소 공백수의 정의를 이용해서
반복문으로 단순하게 구현할 수도 있지만
최대 공약수(Greatest Common Divisor, GCD)는
유클리드 호제법(Euclidean Algorithm)을 이용하여 구할 수 있다.
또한 최대 공약수를 통해서 최소공백수(LCM)를 쉽게 구할 수 있다.
→ LCM = A * B / GCD(A, B)
ex) 10과 50의 최소공배수 = 50 일 때,
10과 50의 최대공약수 = 10
→ 최소공배수 (LCM) = 50 = 10 * 50 / 10
정답 출력시에는 별도 배열에 저장하지 않고 바로 출력해도 관계없다.
백준 문제 사이트에서 입력과 출력은 별개로 처리하기 때문이다.
#include <iostream>
using namespace std;
int GCD(int a, int b)
{
return b == 0 ? a : GCD(b, a % b);
}
int main(void)
{
// freopen("input.txt", "r", stdin);
int T, A, B;
cin >> T;
while (T--)
{
cin >> A >> B;
cout << A * B / GCD(A, B) << endl;
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1110 더하기 사이클 (0) | 2021.08.06 |
---|---|
[BOJ] 백준 1977 완전제곱수 (0) | 2021.08.05 |
[BOJ] 백준 13701 중복 제거 (0) | 2021.08.02 |
[BOJ] 백준 2210 숫자판 점프 (0) | 2021.07.29 |
[BOJ] 백준 2309 일곱 난쟁이 (0) | 2021.07.28 |
댓글