1. 문제
매개변수 : 첫 번째 분수의 분자(number1)와 분모(denom1), 두 번째 분수의 분자(number2)와 분모(denom2)
리턴값 : 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열
조건 : 0 < number1, denom1, number2, denom2 < 1,000
2. 풀이
1) 분모 = 분모1 * 분모2
2) 분자 = 분자1*분모2 + 분자2*분모1
3) 분모 > 분자면 max는 분모, min은 분자, 아니면 max는 분자, min은 분노
- 최대공약수 ea 구하기!
4) 최대공약수 : 유클리드 호제법 이용
public static int gcd(int p, int q)
{
if (q == 0) return p;
return gcd(q, p%q);
}
5) 정답 배열 = {분자 / 최대공약수, 분모 / 최대공약수}
* 풀 코드 : https://github.com/cejinn/programmers_lv0/blob/main/basic037.java
'알고리즘 > 프로그래머스(Lv.0)' 카테고리의 다른 글
[프로그래머스] Lv.0 구슬을 나누는 경우의 수 (1) | 2023.11.28 |
---|---|
[프로그래머스] Lv.0 최빈값 구하기 (0) | 2023.11.14 |
[프로그래머스] Lv.0 두 수의 나눗셈 (0) | 2023.11.01 |