https://school.programmers.co.kr/learn/courses/30/lessons/120808
def solution(denum1, num1, denum2, num2):
answer = []
# 두 수가 배수관계일때.
if max(num1,num2)%min(num1,num2)==0:
tmp = max(num1,num2)//min(num1,num2)
if num1 <=num2:
answer = [denum1*tmp+denum2, num2]
else:
answer = [denum2*tmp+denum1, num1]
# 두 수가 배수관계가 아닐때.
else:
answer = [denum2*num1+denum1*num2, num1*num2]
# 약분되는지 판별
if answer[0]%answer[1] ==0:
x,y = divmod(answer[0],answer[1])
answer[0] = x
answer[1] = y+1
return answer
solution(12,20,24,40)
# [48, 40]
- 기약분수란?
분모와 분자가 1이외의 공통된 인수를 갖지 않을 때의 분수이다. 분수식을 공통인수로 나누게 되면 기약분수가 된다.
def solution(denum1, num1, denum2, num2):
answer = []
# 두 수가 배수관계일때.
if max(num1,num2)%min(num1,num2)==0:
tmp = max(num1,num2)//min(num1,num2)
if num1 <=num2:
answer = [denum1*tmp+denum2, num2]
else:
answer = [denum2*tmp+denum1, num1]
# 두 수가 배수관계가 아닐때.
else:
answer = [denum2*num1+denum1*num2, num1*num2]
# 약분되는지 판별
div = 2
while min(answer[0],answer[1])>=div:
if answer[0]%div==0 and answer[1]%div==0:
answer[0] = answer[0]//div
answer[1] = answer[1]//div
else:
div+=1
return answer
solution(12,20,24,40)
# [6, 5]