✔ 최대공약수와 최소공배수
문제 분석하기
두 수의 최대공약수와 최소공배수를 찾아 배열로 반환
손으로 풀어보기
- 유클리드 호제법을 이용해 최대 공약수를 구함
- 최대 공약수를 이용해 최소 공배수를 구함
- 최소 공배수는 두 자연수의 곱 / 최대 공약수
- 최대 공약수와 최소 공배수를 배열에 넣어 반환
슈도코드 작성하기
n, m(두 자연수)
answer(두 수의 최대 공약수와 최소 공배수를 담은 배열)
answer[0] = 최대 공약수 함수
answer[1] = n * m / answer[0]
answer 반환
최대 공약수 함수 {
a(n과 m 중 큰 수)
b(n과 m 중 작은 수)
if(b가 0이라면)
a가 최대 공약수
else
최대 공약수 함수(작은 수, 큰 수 % 작은 수)
}
코드 구현하기
/**
* 12940) 최대공약수와_최소공배수
*/
public class L024_12940 {
// n, m(두 자연수)
public int[] solution(int n, int m) {
// answer(두 수의 최대 공약수와 최소 공배수를 담은 배열)
int[] answer = new int[2];
// answer[0] = 최대 공약수 함수
answer[0] = gcd(n, m);
// answer[1] = n * m / answer[0]
answer[1] = n * m / answer[0];
// answer 반환
return answer;
}
// 최대 공약수 함수
private int gcd(int n, int m) {
// a(n과 m 중 큰 수)
int a = Math.max(n, m);
// b(n과 m 중 작은 수)
int b = Math.min(n, m);
// b가 0이라면
if (b == 0)
// a가 최대 공약수
return a;
else
// 최대 공약수 함수(작은 수, 큰 수 % 작은 수)
return gcd(b, a % b);
}
// 테스트 케이스
public static void main(String[] args) {
L024_12940 solution = new L024_12940();
int n = 3;
int m = 12;
int[] result = solution.solution(n, m);
System.out.println(Arrays.toString(result));
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[12944] 평균 구하기 (0) | 2023.12.28 |
---|---|
[12943] 콜라츠 추측 (0) | 2023.12.28 |
[12937] 짝수와 홀수 (0) | 2023.12.28 |
[12935] 제일 작은 수 제거하기 (0) | 2023.12.27 |
[12934] 정수 제곱근 판별 (0) | 2023.12.27 |