반응형
문제
https://www.acmicpc.net/problem/2609
풀이
문제 그대로 최대공약수와 최소공배수를 구하는 문제!
최대공약수는 유클리드 호제법을 사용하면 쉽게 구할 수 있다.
간단하게 설명하면
$gcd(A, 0) = A$
$gcd(B, 0) = B$
$A = B * Q + R$ 이고 $B != 0$이면 $gcd(A, B) = gcd(B, R)$이다.
$Q = A / B$ 가 될 것이고, $R = A % B$이다.
이를 재귀함수로 쉽게 구현할 수 있다.
최대공약수를 구했다면, 최소공배수는 어떻게 구할 수 있을까.
어릴때 수학시간에 배웠던 기억을 되살려서..
최소공배수 = A * B / 최대공약수
를 떠올릴 수 있다.
소스코드
후기
굳이 유클리드 호제법을 사용해서 최대공약수를 구하지 않고 완전탐색으로도 구할 수 있을 것이다.
하지만 더 효율적으로 구하기 위해 유클리드 호제법을 사용함.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 10845 큐 (Swift) (0) | 2024.01.07 |
---|---|
[BOJ] 백준 1676 팩토리얼 0의 개수 (Swift) (0) | 2024.01.07 |
[BOJ] 백준 15829 Hashing (Swift) (2) | 2024.01.03 |
[BOJ] 백준 2751 수 정렬하기 2 (Swift) (0) | 2023.12.31 |
[BOJ] 백준 4153 직각삼각형 (Swift) (1) | 2023.12.30 |