728x90
🅰️문제주소 : https://www.acmicpc.net/problem/1934
🚩문제
🪡풀이
- 우선 유클리드 호제법으로 최대공약수를 구해야한다
- 최소공배수 = 'A*B / 최대공약수' 공식에 대입한다 끝
☕코드는 아래 숨김
더보기
#include <iostream>
int main()
{
std::ios::sync_with_stdio(false);
std::cout.tie(0);
std::cin.tie(0);
int T, A, B;
std::cin >> T;
for (int i = 0; i < T; ++i) {
std::cin >> A >> B;
int big, small;
if (A <= B) { //A가 B보다 작다는 표현이 명확하지 않아서 조건넣음
big = B;
small = A;
}
else {
big = A;
small = B;
}
while (small != 0) { //재귀 함수로 더 깔끔하게 구현가능
int temp_mod = big % small;
big = small;
small = temp_mod;
}
std::cout << A * B / big << "\n";
}
return 0;
}
💡알게 된 것
- 유클리드 호제법
1) A와 B의 최대공약수를 구하려면 큰수/작은수의 나머지값을 구한다
2) '기존 작은수'가 '다음번 큰수'가 되고 '구했던 나머지 값'이 '다음번 작은수'가 된다.
3) 나머지가 0이될때까지 반복해서 나머지가 0일때 '작은수' 값이 최대 공약수이다
- 최소 공배수는 'A*B/최대 공약수'
728x90
'운동하는 개발자 > 알고리즘, 코딩테스트' 카테고리의 다른 글
Beakjoon] 물통 (백준 2251코테) - 그래프 (C++) (0) | 2024.01.13 |
---|---|
Beakjoon] Ax+By=C (백준 21568코테) - 정수론 (C++) (0) | 2024.01.01 |
Beakjoon] GCD(n, k) = 1 aka.오일러의 피 (백준 11689 코테) - 정수론 (C++) (0) | 2023.12.25 |
Beakjoon] 제곱 ㄴㄴ 수 (백준 1016 코테) - 정수론 (C++) (0) | 2023.12.21 |
Beakjoon] 소수 구하기 (백준 1929 코테) - 정수론 (C++) (0) | 2023.12.16 |