본문 바로가기

코딩 문제

코딩 문제 - 분수의 덧셈

분수의 덧셈
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항
0 <denum1, num1, denum2, num2 < 1,000
입출력 예
denum1 num1 denum2 num2 result
1 2 3 4 [5, 4]
9 2 1 3 [29, 6]
입출력 예 설명
입출력 예 #1

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

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

 

public int[] solution(int denum1, int num1, int denum2, int num2) {
		int answer[] = new int[2];
		
		int numerator = (denum1*num2) + (denum2*num1);
		int denominator = num1*num2;
		
//		int factor1 = numerator;
//		int factor2 = denominator;
//		int remainder = factor1%factor2;
//		int maxCommonFactor = 0;
//		
//		while(remainder != 0) {
//			factor1 = factor2;
//			factor2 = remainder;
//			remainder = factor1%factor2;
//		}
//		maxCommonFactor = factor2;
		
		int maxCommonFactor = maxCommonFactor(numerator, denominator);

		answer[0] = numerator/maxCommonFactor;
		answer[1] = denominator/maxCommonFactor;

		return answer;
	}
	
	public int maxCommonFactor(int num1, int num2) {
		if(num2 == 0) {
			return num1;
		} else {
			return maxCommonFactor(num2, num1%num2);
		}
	}

'코딩 문제' 카테고리의 다른 글

코딩 문제 - 중앙값 구하기  (0) 2022.11.21
코딩 문제 - 배열 두 배 만들기  (0) 2022.11.10
코딩 문제 - 두 수의 나눗셈  (0) 2022.11.10
코딩 문제 - 몫 구하기  (0) 2022.11.09
코딩 문제 - 두 수의 곱  (0) 2022.11.09