문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
import math
def solution(numer1, denom1, numer2, denom2):
answer = []
sum_numer = numer1*denom2 + numer2*denom1
sum_denom = denom1*denom2
div = math.gcd(sum_numer, sum_denom)
answer.append(sum_numer//div)
answer.append(sum_denom//div)
return answer
MADE BY ME
입력: numer1, denom1(분수1의 분자/분모) numer2, denom2(분수 2의 분자/분모)
출력: 배열 answer(두 분수 더한 값을 기약분수로 나타냈을 때의 분자와 분모가 담긴 배열)
※ 기약분수: 분모와 분자의 최대공약수가 1뿐이라서, 더이상 약분할 수 없는 상태의 분수
1) 우선 통분한다. (분모 최소공배수 이런 거 없이 그냥 제일 쉽게 곱함)
2) math의 gcd라는 모듈을 써서 최대공약수를 구함
3) 각 분모와 분자에 최대공약수로 나눠서 기약분수화 했다.
다른 코드 인사이트: 내 거랑 뭐가 다를까?
for i in range(min(denum0,num0),0,-1):
if denum0%i == 0 and num0%i == 0:
s = i # 최대공약수 s
break
모듈 없이 최대공약수 s를 구했다.
from fractions import Fraction
파이썬 기본 내장 모듈인 fractions에서 분수 계산을 담당하는 Fraction 클래스를 사용 -> 자동으로 기약분수 형태로 정리해 준다고 함