[백준/Python] 1735_분수 합

2021. 6. 22. 12:31백준 알고리즘

문제

https://www.acmicpc.net/problem/1735

 

1735번: 분수 합

첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.

www.acmicpc.net

풀이

두 분수의 합을 기약 분수로 나타낸 식은 다음과 같습니다.

$$ {a \over b} \times {c \over d} = {(a \times d + c \times b) \div GCD \over (b \times d) \div GCD} $$

$$ GCD = (a \times d + c \times b)와 (b \times d)의 최대공약수$$

코드

import sys


def get_GCD(a, b):
    if b == 0:
        return a
    return get_GCD(b, a % b)


child1, mom1 = map(int, sys.stdin.readline().rstrip().split())
child2, mom2 = map(int, sys.stdin.readline().rstrip().split())
gcd = get_GCD(child2 * mom1 + child1 * mom2, mom1 * mom2)
result_child = (child2 * mom1 + child1 * mom2) // gcd
result_mom = (mom1 * mom2) // gcd
print(result_child, result_mom)

'백준 알고리즘' 카테고리의 다른 글

[백준/Python] 10973_이전 순열  (0) 2021.06.22
[백준/Python] 2529_부등호  (0) 2021.06.22
[백준/Python]14503_로봇 청소기  (0) 2021.06.18
[백준/Python]1965_상자넣기  (0) 2021.06.18
[백준/Python]1759_암호 만들기  (0) 2021.06.17