[JAVA] 프로그래머스(Q120808) : 분수의 덧셈

안녕하세요, 해을입니다🦖

이번 글에서는 프로그래머스 : 분수의 덧셈 문제에 대해 알아보겠습니다!

💡 문제

코딩테스트 연습 > 코딩테스트 입문 > 분수의 덧셈

💡 문제 설명

첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다.

두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

💡 제한사항

  • 0 < numer1, denom1, numer2, denom2 < 1,000

💡 입출력 예

numer1denom1numer2denom2result
1234[5,4]
9213[29,6]

💡 입출력 예 설명

입출력 예 #1

  • 1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.

입출력 예 #2

  • 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.

🚩 문제 풀이

통분과 최대 공약수 관련 문제입니다.

분모가 서로 다른 분수의 덧셈을 계산하기 위해 먼저 통분을 진행하고

기약 분수로 나타내기 위해 최대 공약수를 구한 뒤 나눠줍니다.

참고 : [JAVA] 최대공약수(GCD) / 최소공배수(LCM) 구하는 방법

🚩 소스 코드

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int numer = denom1 * numer2 + denom2 * numer1;
        int denom = denom1 * denom2;
        
        int gcd = getGCD(numer, denom);
        
        return new int[]{numer/gcd, denom/gcd};
    }
    
    public int getGCD(int a, int b){
        if(a%b == 0) return b;
        return getGCD(b, a%b);
    }
}

오류 및 오타 등 피드백, 질문, 인사 등 무엇이든 언제나 환영입니다!

읽어주셔서 감사합니다.

끝!🦕


© 2022. Haeeul All rights reserved.

🐾해을의 개발자국🐾

Powered by Hydejack v9.1.5