728x90
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
// 공약수 계산
int lcm = lcm(denom1, denom2);
// 각 분수의 분모를 공약수로 맞추어 더함
int numer = numer1 * (lcm / denom1) + numer2 * (lcm / denom2);
int denom = lcm;
// 결과 분수의 분자와 분모의 최대 공약수 계산
int gcd = gcd(numer, denom);
// 결과 분수의 분자와 분모를 최대 공약수로 나눠 기약 분수 표현
int[] answer = {numer / gcd, denom / gcd};
return answer;
}
// 최대 공약수 계산 (유클리드 호제법)
public int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
// 최소 공배수 계산
public int lcm(int a, int b) {
return a * b / gcd(a, b);
}
}
'코테 > 프로그래머스' 카테고리의 다른 글
각도기 (0) | 2023.02.21 |
---|---|
배열 뒤집기 (0) | 2023.02.21 |
피자 나눠 먹기 (2) (0) | 2023.02.21 |
피자 나눠먹기 (1) (0) | 2023.02.13 |
중앙값 구하기 (0) | 2023.02.09 |
댓글