백준 1735번: 분수 합

최창효·2022년 1월 18일
0
post-thumbnail

문제 설명

  • 현실에서 사용하는 분수계산법을 프로그래밍으로 구현하는 문제입니다.

접근법

  • A/B+C/D=(AD+BC)/BDA/B+C/D = (A*D+B*C)/B*D입니다.
  • 해당 문제에서 중요한 점은 기약분수로 표현하는 것입니다.
    • 기약분수는 더 이상 나눌 수 없는 분수형태로 이는 최대공약수와 밀접한 관련이 있습니다.
  • 분모와 분자를 각각 최대공약수로 나눈 값이 곧 기약분수입니다.

정답

a,b = list(map(int,input().split(' ')))
c,d = list(map(int,input().split(' ')))

numerator = (b*c+a*d) #분자
denominator = b*d #분모

#최대공약수
def GCD(x,y):
    while y:
        x,y = y,x%y
    return x

gcd = GCD(numerator,denominator)

numerator = int(numerator/gcd) #최대공약수로 나누기(약분)
denominator = int(denominator/gcd) #최대공약수로 나누기(약분)

print(f"{numerator} {denominator}") #정답
profile
기록하고 정리하는 걸 좋아하는 백엔드 개발자입니다.

0개의 댓글

관련 채용 정보