class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int[] answer = new int[2];
if(denom2 % denom1 == 0) {
if(denom2 == denom1) {
int plus = numer1 + numer2;
answer[0] = plus;
answer[1] = denom2;
} else {
int denom = denom2 / denom1;
denom1 = denom1 * denom;
numer1 = numer1 * denom;
int plus = numer1 + numer2;
answer[0] = plus;
answer[1] = denom2;}
}else if(denom1 % denom2 == 0) {
int denom = denom1 / denom2;
denom2 = denom2 * denom;
numer2 = numer2 * denom;
int plus = numer1 + numer2;
answer[0] = plus;
answer[1] = denom1;
}
else {
numer1 = numer1 * denom2;
numer2 = numer2 * denom1;
int plus = numer1 + numer2;
int denom = denom1 * denom2;
answer[0] = plus;
answer[1] = denom;
}
// 약분 처리
int gcd = greatestCommonDivisor(answer[0], answer[1]);
answer[0] = answer[0] / gcd;
answer[1] = answer[1] / gcd;
if (answer[0] % answer[1] == 0) {
answer[0] = answer[0]/answer[1];
} else if (answer[1] % answer[0] == 0) {
answer[1] = answer[1]/answer[0];
}
return answer;
}
// 최대공약수 계산 메소드
private int greatestCommonDivisor(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
}
class Solution {
public int[] solution(int denum1, int num1, int denum2, int num2) {
int[] answer = new int[2];
answer[0]=denum1*num2+denum2*num1;
answer[1]=num1*num2;
int min = Math.min(answer[0],answer[1]);
int max = 1;
for(int i=1; i<=min; i++){
if(answer[0]%i==0 && answer[1]%i==0){
max= i;
}
}
answer[0] /= max;
answer[1] /= max;
return answer;
}
}
주어진 코드는 두 개의 분수를 더하고, 그 결과를 기약 분수로 변환하여 반환하는 메서드입니다. 각 분수는 분모(denum1, denum2)와 분자(num1, num2)로 표현됩니다.
1. answer 배열을 생성하고 크기가 2인 배열로 초기화합니다.
2. 분수의 덧셈을 수행하여 answer[0]에 분자의 합을, answer[1]에 분모를 저장합니다.
3. answer[0]과 answer[1] 중 작은 값을 min 변수에 저장합니다.
4. max 변수를 1로 초기화합니다.
5. i를 1부터 min까지 증가시키면서, answer[0]과 answer[1] 모두 i로 나누어지는 경우에만 max 값을 i로 갱신합니다. 이를 통해 answer[0]와 answer[1]의 최대 공약수(max)를 구합니다.
6. answer[0]와 answer[1]를 max로 나누어 기약 분수로 변환합니다.
7. 최종적으로 변환된 기약 분수를 담은 answer 배열을 반환합니다.
8. 즉, 주어진 분수들을 더한 후, 그 결과를 기약 분수로 변환하여 반환하는 코드입니다.
'ㅋㅌ' 카테고리의 다른 글
문자열 뒤집기 // my_string.charAt(i), my_string.length() (0) | 2023.06.12 |
---|---|
****n의 배수 고르기 //배열에서 n의 배수가 아닌 숫자들을 제거 (0) | 2023.06.12 |
n의 배수 번째 숫자 출력하기// .charAt(i); (0) | 2023.06.12 |
중앙값 구하기 // 크기 순으로 배열 정렬 Array.sort(array) (0) | 2023.06.11 |
배열의 유사도 // 문자열이 같은지 비교 .equals (0) | 2023.06.11 |