https://school.programmers.co.kr/learn/courses/30/lessons/120808
[문제설명]
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
[나의 풀이]
import math
def solution(numer1, denom1, numer2, denom2):
numer = numer1 * denom2 + numer2 * denom1
denom = denom1 * denom2
gcd = math.gcd(numer, denom)
return [numer/gcd,denom/gcd]
최대공약수를 구하는 방법을 몰라서 검색해봄
[다른 풀이]
from fractions import Fraction
def solution(denom1, num1, denum2, num2):
answer = Fraction(denom1, num1) + Fraction(denom2, num2)
return [answer.numerator, answer.denominator]
-참고
(분수를 정확하게 계산하는 방법)
def solution(denom1, num1, denom2, num2):
answer = []
s = 0
denum0 = (denom1*num2) +(denom2*num1)
num0 = num1*num2
for i in range(min(denom0,num0),0,-1):
if denom0%i == 0 and num0%i == 0:
s = i
break
denom0 /= s
num0 /= s
answer.append(denom0)
answer.append(num0)
return answer
a /= b는 a = a/b를 의미함 "왼쪽 변수에 오른쪽 값을 나누고 그 결과를 왼쪽 변수에 할당한다"
리스트이름.append(데이터값) 은 리스트의 맨 마지막 부분에 데이터를 삽입하는 역할을 함
-참고
(range 함수)
https://ctkim.tistory.com/entry/python-range-function
(나눗셈 나머지, 몫 구하기)
https://dev-note-97.tistory.com/65