코딩테스트/Programmers_LV0
Programmers_JAVA_분수의 덧셈
wn1331
2022. 11. 25. 17:39
반응형
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <denum1, num1, denum2, num2 < 1,000
class Solution {
public int[] solution(int denum1, int num1, int denum2, int num2) {
int answer_denum, answer_num, gongbaesoo ,gongyaksoo=0;
int[] answer = new int[2];
//분모의 최대공약수 구하기.
for(int i = 1; i<=num1;i++) if(num1%i==0) for (int j = 1; j <= num2; j++) if(num2%j==0) if(i==j) gongyaksoo=i;
System.out.println(gongyaksoo);
//분모의 최소공배수 구하기. 최소공배수 = (a*b)/최대공약수
gongbaesoo = (num1*num2)/gongyaksoo;
//분자*=((분모 2개의 최소공배수)/분모) 1,2에 적용
denum1 *=gongbaesoo/num1;
denum2 *=gongbaesoo/num2;
//분자끼리 더하고 분모는 (분모 2개의 최소공배수)
answer_denum = denum1+denum2;
answer_num = gongbaesoo;
//더한 값을 기약분수로 변환. 분자와 분모를 최대공약수로 나눈다.
gongyaksoo = 0;
for(int i = 1; i<=answer_denum;i++) if(answer_denum%i==0) for (int j = 1; j <= answer_num; j++) if(answer_num%j==0) if(i==j) gongyaksoo=i;
answer[0] = answer_denum/gongyaksoo;
answer[1] = answer_num/gongyaksoo;
return answer;
}
}
반응형