몸풀기로 쉬운 코테 몇개 풀다가 생각지도 않은곳에서 시간을 너무 끌어버렸다.

바로 분수의 덧셈.

일단 정답은 맞췄지만 정답 도출까지 시간이 너무 오래걸렸기에 복습차 기록을 남긴다.

 


문제 설명

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

제한사항과 입출력 예

입출력 예 #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[] answer = new int[2];
        
        var top = numer1 * denom2 + numer2 * denom1;
        var bottom = denom1 * denom2;
        var max = 0;
        for(int i = 1; i <= top; i++)
        {
        	// 분모 그리고 분자를 i로 나누어 0이 될때가 최대공약수이다.
            if(top % i == 0 && bottom % i == 0)
            {
                max = i;
            }
        }
        answer[0] = top / max;
        answer[1] = bottom /max;
       
        return answer;
    }
}

1보다 큰 최대 공약수가 없을땐 max에 1이 들어간다.

즉 분모와 분자가 기존 그대로 삽입됨.

 

더 나은 방법이나 질문은 댓글 달아주세용 :)

728x90

+ Recent posts