def gcd(a, b):
while b:
a, b = b, a % b
return a
def lcm(a, b):
return a * b // gcd(a, b)
첫 번째 분수의 분자와 분모를 뜻하는 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 합니다.
def gcd(a, b):
while b:
a, b = b, a % b
return a
def lcm(a, b):
return a * b // gcd(a, b)
def solution(numer1, denom1, numer2, denom2):
# 두 분모의 최소 공배수를 구합니다.
min_ = lcm(denom1, denom2)
# 공통 분모를 사용하여 두 분수를 더합니다.
numer = numer1 * ( min_// denom1) + numer2 * (min_ // denom2)
denom = min_
# 결과 분수를 기약 분수로 만들기 위해 분자와 분모의 최대 공약수를 구합니다.
max_ = gcd(numer, denom)
# 분자와 분모를 최대 공약수로 나눕니다.
return [numer // max_, denom // max_]