분수의덧셈
분수의 덧셈
분자, 분모가 다른 2개의 분수를 덧셈하고 기약분수 만드는 문제
# 내 코드
def solution(numer1, denom1, numer2, denom2):
# 분모 둘의 곱하고 그에 따라 반대 분모와 분자에 곱해 더 해준다.
answer = [numer1*denom2+numer2*denom1, denom1*denom2]
# 기약 분수
while True:
# 기약 분수가 될 때까지 반복한다.
check = 1
# 분모, 분자의 최소공약수를 찾아서 각각 최소공약수로 나누어준다.
for i in range(2,min(answer)+1):
if not answer[0] % i and not answer[1] % i :
answer = [x//i for x in answer]
check = 0
break
# 최소공약수가 발견되지 않으면 정지
if check : break
return answer
solution(3,4,5,2)
[13, 4]
- 함수
- 3/4 + 5/2 = 3/4 + 10/4 = 13/4 (기약분수)
- 알고리즘
- 분모 둘의 곱하고 그에 따라 반대 분모와 분자에 곱해 더 해준다.
- 기약 분수가 될 때까지 아래 과정을 반복한다.
- 분모, 분자의 최소공약수를 찾아서 각각 최소공약수로 나누어준다.
- 최소공약수가 발견되지 않으면 정지
- 추가 방법
- math의 gcd를 사용
import math math.gcd(10, 15) # return 5
- fractions의 Fraction을 사용
from fractions import Fraction Fraction(1, 5) # 1/5 Fraction("1/5") # 1/5
- math의 gcd를 사용