티스토리 뷰

분수의 덧셈

문제 설명

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


제한사항

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

 

입출력 예

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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


이번 문제는 간단한 분수 계산이었다.

 

분수의 덧셈은 분모를 최소공배수로 맞추어야한다.

최종 답안의 기약 분수는 분모와 분자의 최대공약수를 찾아 둘다 나누어주어야한다.

 

using System;

public class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int lcm = LCM(denom1, denom2);
        
        int[] answer = new int[2] { (numer1 * (lcm / denom1)) + (numer2 * (lcm / denom2)), lcm };
        
        int gcd = GCD(answer[0], answer[1]);
        
        answer[0] /= gcd;
        answer[1] /= gcd;
        
        return answer;
    }
    
    private int LCM(int a, int b) => (a * b) / GCD(a, b);
    private int GCD(int a, int b) => (a % b == 0 ? b : GCD(b, a % b));
}

최근에 올라온 글
최근에 달린 댓글
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함