[프로그래머스(python)]분수의 덧셈

구준희·2023년 8월 23일
0

알고리즘

목록 보기
16/31
post-thumbnail

📌 난이도, 유형

난이도 : Lv.0


📌 문제설명


📌 입출력 예


📄 코드

  1. math.gcd()사용
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
  1. Fraction 사용
from fractions import Fraction

def solution(numer1, denom1, numer2, denom2):
    answer = Fraction(numer1,denom1) + Fraction(numer2,denom2)
    return [answer.numerator,answer.denominator]

📝 해설

분수를 더한 다음 분모,분자를 최대공약수로 나눠줌

math.gcd(a,b)

  • a,b의 최대공약수를 출력해줌

Fraction

  • 유리수를 계산할 때 사용하는 모듈
  • Fraction(분자,분모) 형태로 만들 수 있음
  • 분자의 값은 .numerator 분모의 값은 .denominator로 알 수 있음

번외 : 최대공약수 구하기

numer = numer1*denom2 + numer2*denom1
denom = denom1 * denom2

for i in range(min(numer,denom),0,-1):
	if numer % i == 0 and denom % i == 0:
    	result = i
        break

1.분자와 분모중 작은 수를 기준으로 0까지 역순으로 for문을 돌림

ex) numer = 10, denom = 5일때
for i in range(5,0,-1)
i = 5 -> 4 -> 3 -> 2 -> 1 이렇게 내려감
  1. 분모와 분자랑 같이 나누어 떨어지는 값이 최대공약수
profile
꾸준히합니다.

0개의 댓글