문제
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
Tip
[유클리드 호제법]
- 큰수 결정
- 큰수 / 작은수 -> 몫, 나머지
- 나머지 조사
3-1. 나머지 == 0 최대공약수 = 작은수 , 최소공배수 = 두수의곱 / 최대공약수
3-2. 나머지 != 0 큰수 = 작은수 작은수 = 나머지 2. 반복
풀이
package Programmers.level1;
public class problem6 {
public static void main(String[] args) {
problem6 pb6 = new problem6();
int n = 300;
int m = 124;
int[] test = pb6.solution(n, m);
System.out.println(test);
}
public int[] solution(int big, int small) {
int[] answer = new int[2];
if (big < small) {
int tmp = big;
big = small;
small = tmp;
}
int gcd = gcd(big,small);
int lcm = big*small/gcd;
answer[0] = gcd;
answer[1] = lcm;
return answer;
}
public int gcd(int a,int b) {
if(a==0){
return b;
}
else {
return gcd(b%a,a);
}
}
}
'Algorithm > Programmers(Java)' 카테고리의 다른 글
[Programmers] 콜라츠 추측 (0) | 2020.01.28 |
---|---|
[Programmers] 하샤드 수 (0) | 2020.01.28 |
[Programmers] 평균 구하기 (0) | 2020.01.28 |
[Programmers] 정수 내림차순으로 배치하기 (0) | 2020.01.28 |
[Programmers] 제일 작은 수 제거하기 (0) | 2020.01.28 |