최대공약수와 최소공배수
내가 쓴 답
생각보다 너무 긴 것 같아 다른 사람 것을 찾아 봤다.
public class Solution {
public int[] solution(int n, int m) {
int min = 0;
int max = 0;
if (n < m)
{
return ReturnMinMax(n, m);
}
else
{
return ReturnMinMax(m, n);
}
}
private int[] ReturnMinMax(int n, int m)
{
int min = 0;
for (int i = 1; i <= n; i++)
{
if (n % i == 0 && m % i == 0)
{
min = i;
}
}
int j = 1;
int max = 0;
while (true)
{
if (m * j % n == 0)
{
max = m * j;
break;
}
j++;
}
return new int[] { min, max };
}
}
다른 사람 풀이
a%b가 딱 떨어지면 최대 공약수인 것이고 안 나눠지면 작은 수와 큰수%작은수 한 값을 다시 재귀로 뽑아내는 것이 중요한 것 같다.
public class Solution {
public int[] solution(int n, int m) {
int _gcd = gcd(n, m);
int[] answer = new int[] {_gcd, n * m / _gcd};
return answer;
}
int gcd(int a, int b)
{
return (a % b == 0 ? b : gcd(b, a % b));
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 - 로또의 최고 순위와 최저 순위 (0) | 2023.09.06 |
---|---|
프로그래머스 - 시저 암호 (0) | 2023.08.30 |
프로그래머스 - 정수 제곱근 판별하기 (0) | 2023.08.25 |
프로그래머스 - 정수 내림차순으로 배치하기 (0) | 2023.08.25 |
프로그래머스 - 최빈값 구하기 (0) | 2023.08.17 |