본문 바로가기
코테/프로그래머스

분수의 덧셈

by Slow Motion~ 2023. 2. 8.
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

댓글