프로그래머스

[Level 0] 분수 덧셈 - Java

katia 2023. 3. 20. 22:27

분수의 덧셈

1. 문제 설명

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

2. 제한 사항

  • 0 < numer1, denom1, numer2, denom2 < 1000

3. 입출력 예

input result
[1, 2, 3, 4] [5, 4]
[9, 2, 1, 3] [29, 6]

4. 입출력 예 설명

  • 입출력 예 #1
    • 1 / 2 + 3 / 4 = 5/ 4 입니다, 따라서 [5,4]를 return 합니다.
  • 입출력 예 #2
    • 9 / 2 + 1 / 3 = 29/ 6 입니다, 따라서 [29,6]를 return 합니다.

5. 문제 풀이(Java)

class Solution{
    // 최대 공약수 구하는 함수
    int getGCD(int num1, int num2){
        int result = 1;
        for(int i = Math.max(num1, num2); i > 1; i --){
            if (num1 % i == 0 && num2 % i == 0){
                result = i;
                break;
            }
        }
        return result;
    }

    // 실질적으로 문제 푸는 함수 구문
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = {};

        // 분모 와 분자를 최대치로 구하는 공식
        int resultDenom = denom1 * denom2;
        int resultNum = denom2 * numer1 + denom1 * numer2;

        // 최대 공약수 구하기(분모와 분자를 넣고)
        int i = getLcm(resultDenom, resultNum) ;

        // 각각 최대 공약수 나누기
        resultDenom /= i;
        resultNum /= i;

        // 배열 형식으로 전달하기위해 배열 새로 선언
        answer = new int[] {resultNum , resultDenom};
        return answer;
    }
}

'프로그래머스' 카테고리의 다른 글

[Level 0] 옹알이 - Java  (0) 2023.03.20