본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 분수의 덧셈

728x90

코드 힌트

  1. 분모와 분자의 계산:
    • 두 분수의 합을 구하기 위해 공통 분모를 사용합니다.
    • 분모는 denom1 * denom2로 계산합니다.
    • 분자는 numer1 * denom2 + numer2 * denom1로 계산합니다.
  2. 기약분수로 만들기:
    • 분자와 분모를 최대공약수(GCD)로 나누어 기약분수로 만듭니다.
    • GCD는 유클리드 호제법, 제귀함수, for문을 사용하여 계산합니다.
    • GCD를 구하는 방법은 여기를 클릭하시면 됩니다.
  3. 결과 배열:
    • 결과 배열 result에 기약분수의 분자와 분모를 저장하여 반환합니다.

 


정답은 더보기 클릭

더보기
class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        // 두 분모의 곱으로 공통 분모를 계산
        int denom = denom1 * denom2;
        // 두 분자의 합을 계산 (공통 분모를 기준으로)
        int numer = denom2 * numer1 + denom1 * numer2;
        
        // 최대공약수를 구해 기약분수로 만들기
        int gcdValue = gcd(denom, numer);
        
        // 결과 배열에 기약분수의 분자와 분모를 저장
        int[] result = new int[2];
        result[0] = numer / gcdValue; // 기약분수의 분자
        result[1] = denom / gcdValue; // 기약분수의 분모
        
        return result;
    }
    
    // 유클리드 호제법을 사용하여 최대공약수를 구하는 메소드
    public static int gcd(int n, int m) {
        while (m != 0) {
            int tmp = n % m;
            n = m;
            m = tmp;
        }
        return n;
    }
}
728x90