티스토리 뷰
분수의 덧셈
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 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));
}
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers] 입문) 최빈값 구하기 (Dictionary) (0) | 2023.07.18 |
---|---|
[Programmers] 입문) OX퀴즈 (Split, Int32.Parse) (0) | 2023.07.18 |
[Programmers] 입문) 다음에 올 숫자 (등차수열, 등비수열) (0) | 2023.07.17 |
[Programmers] 입문) 연속된 수의 합 (0) | 2023.07.17 |
[Programmers] 입문) 안전지대 (0) | 2023.07.13 |