첫 번째 분수의 분자와 분모를 뜻하는
numer1,denom1, 두 번째 분수의 분자와 분모를 뜻하는numer2,denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. (0 < numer1, denom1, numer2, denom2 < 1,000)
# 내 답
def solution(numer1, denom1, numer2, denom2):
def gcd(a, b):
while b:
a, b = b, a % b
return a
def lcm(a, b):
return a * b // gcd(a, b)
# 분모의 최소공배수 찾기
lcm_lower = lcm(denom1, denom2)
# 분모를 맞추기 위한 분자 계산
numer1 *= lcm_lower // denom1
numer2 *= lcm_lower // denom2
# 분자 더하기
upper = numer1 + numer2
# 최대공약수로 약분
gcd = gcd(upper, lcm_lower)
upper //= gcd
lower //= gcd
return [upper, lower]
# math 라이브러리를 활용한 답안
import math
def solution(denum1, num1, denum2, num2):
# 1. 두 분수의 합 계산
boonmo = num1 * num2
boonja = denum1 * num2 + denum2 * num1
# 2. 최대공약수 계산
gcd_value = math.gcd(boonmo, boonja)
# 3. gcd 로 나눈 값을 answer에 담기
answer = [boonja / gcd_value, boonmo / gcd_value]
return answer