본문 바로가기
PS/수학

1735번: 분수 합 파이썬

by 3급우사기 2024. 9. 4.

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

 

 

두 분수의 분자와 분모가 주어졌을 때, 이 두 분수의 합을 구하고, 그 결과를 기약분수 형태로 출력하는 문제이다.
일단 분수의 합을 먼저 구한뒤 최대공약수로 나눠서 기약분수로 만들면 된다.

 

풀이
import sys

def gcd(x, y):
    # 유클리드 호제법을 사용해 최대공약수(GCD) 구하기
    while y > 0:
        x, y = y, x % y
    return x

# 입력 받기
num1, denom1 = map(int, sys.stdin.readline().split())
num2, denom2 = map(int, sys.stdin.readline().split())

# 두 분수의 합 구하기
numerator_sum = num1 * denom2 + num2 * denom1
denominator_sum = denom1 * denom2

# 기약분수로 만들기 위해 최대공약수 구하기
g = gcd(numerator_sum, denominator_sum)

# 결과 출력
print(numerator_sum // g, denominator_sum // g)



- `gcd(x, y)` 함수는 유클리드 호제법을 사용하여 두 수의 최대공약수를 계산

- `numerator_sum`은 두 분수의 합의 분자를 계산

- `denominator_sum`은 두 분수의 공통 분모를 계산

- `g`는 분자와 분모의 최대공약수를 의미하며, 이를 사용하여 분자와 분모를 나눔으로써 기약분수로 만든다.

- 마지막으로, 기약분수 형태로 변환된 결과를 출력