코딩테스트/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;
    }
}

 

반응형