첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
풀이1)
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int answer[] = new int[2];
//분모를 같게 해주기 위해 각각의 분자에 분모값을 곱하여 덧셈
int numer = numer1*denom2 + numer2*denom1;
int denom = denom1*denom2;
// 최소공배수 구하기
int gcd = 0;
for(int i=1;i<=denom && i<=numer;i++){
if((denom%i==0) && (numer%i==0)){
gcd=i;
}
}
answer[0] = numer/gcd;
answer[1] = denom/gcd;
return answer;
}
}
풀이2)
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int[] answer = new int[2];
int numer = (numer1*denom2)+(numer2*denom1);
int denom = denom1*denom2;
int n = gcd(numer, denom);
answer[0] = numer/n;
// 만약 분모가 약분으로 인해 없어질 때 0 값 출력
if(denom/n==1){
answer[1]=0;
} else{
answer[1] = denom/n;
}
return answer;
}
public static int gcd(int num1, int num2) {
if(num1%num2 == 0) {
return num2;
}
return gcd(num2, num1%num2);
}
}
'programmers' 카테고리의 다른 글
[JAVA] 피자 나눠 먹기(2) (0) | 2024.03.09 |
---|---|
[JAVA] 피자 나눠먹기 (0) | 2024.03.09 |
[JAVA] 중앙값 구하기 Arrays.Sort() (0) | 2024.03.09 |
[JAVA] 배열원소의 길이 (0) | 2024.03.08 |
[JAVA] 배열 뒤집기 (0) | 2024.03.08 |