분수의 덧셈[CT]

성배·2025년 1월 6일
0

코딩테스트

목록 보기
3/53

문제

첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

생각한 풀이
1. 분모가 다르면 분모끼리 곱해주고 분자에 반대 분모 값을 곱해주고 더한다
2. 중요한건 약분 처리를 어떻게 해야하나


  • 최대공약수(GCD)를 이용해서 두 수를 약분해야한다
    두 수를 넣어서 b!=0 일때까지 반복을 해서 최대공약수를 구한다
    구해진 gcd 값으로 분모와 분자에 나누고 값을 출력해준다

 

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int answer[] = new int[2];
        int s = numer1 * denom2 + numer2 * denom1;
        int m = denom1 * denom2;

        int gcd= gcd(s,m);
        s/=gcd;
        m/=gcd;

        answer[0]=s;
        answer[1]=m;

        return answer;
    }
    private int gcd(int a,int b){
        while(b!=0){
            int k= a%b;
            a=b;
            b=k;
        }
        return Math.abs(a);
    }
}

Today's quote

花無十日紅(화무십일홍)

0개의 댓글