반응형
프로그래머스 최대공약수와 최소공배수- JAVA
문제 설명
- 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성하라.
- 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환.
예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환.
제한 사항
- 두 수는 1이상 1000000이하의 자연수입니다.
문제 풀이
- 최대공약수를 찾기 위해서 유클리드의 호제법을 사용한다.
- 유클리드의 호제법을 사용하기 위해 두 수 중 큰 수와 작은 수를 찾아 저장.
- 재귀함수 gcd()를 사용하여 최대공약수를 찾는다.
- 최소공배수는 두 수를 곱한뒤 최대공약수를 나눔으로 찾을 수 있다.
소스 코드
class Solution {
public int[] solution(int n, int m) {
int a = Math.max(n, m);
int b = Math.min(n, m);
int gcd = gcd(a, b);
return new int[]{gcd, a * b / gcd};
}
public int gcd(int a, int b) {
if (a % b == 0) {
return b;
}
return gcd(b, a % b);
}
}
반응형
'알고리즘(Algorithm) > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스] 평균 구하기 - JAVA (0) | 2021.11.03 |
---|---|
[프로그래머스] 콜라츠 추측 - JAVA (0) | 2021.11.03 |
[프로그래머스] 짝수와 홀수 - JAVA (0) | 2021.11.02 |
[프로그래머스] 제일 작은 수 제거하기 - JAVA (0) | 2021.11.02 |
[프로그래머스] 정수 제곱근 판별 - JAVA (0) | 2021.11.02 |