알고리즘 풀이/프로그래머스
[level1] 프로그래머스 - 최대공약수와 최소공배수(JAVA)
데롱디롱
2021. 8. 31. 17:39
728x90
- 최대공약수 gcd(a, b) 구하기 => 유클리드 호제법을 이용
임의의 두 자연수 a, b(a > b)가 주어지고
a를 b로 나눈 나머지를 r(r = a % b)로 이라고 하자.
a = b가되고 b = r이 되는데, 이때 b가 0이 될 때의 a가 최대공약수이다.
- 최소 공배수
최소 공배수 * 최대 공약수 = a * b 임을 이용
따라서 최소 공배수 = a * b / 최대 공약수
class Solution {
public int[] solution(int n, int m) {
// 최대 공약수
int a = Math.max(n, m);
int b = Math.min(n, m);
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
// 최대 공배수 = 두 수의 곱 / 최대공약수
return new int[] { a, n * m / a };
}
}