728x90
문제
분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다.
A와 B는 모두 자연수라고 하자.
두 분수의 합 또한 분수로 표현할 수 있다.
두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오.
기약분수란 더 이상 약분되지 않는 분수를 의미한다.
https://www.acmicpc.net/problem/1735
입력
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다.
입력되는 네 자연수는 모두 30,000 이하이다.
출력
첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 사이에 두고 순서대로 출력한다.
예제
# input
2 7
3 5
# output
31 35
문제 풀이
import math
A,B = map(int,input().split())
C,D = map(int,input().split())
# 분수 합을 구하기 위해 분자와 분모 계산
num_sum = A * D + C * B
den_sum = B * D
# math 라이브러리를 활용해 최대 공약수 구하기
gcd = math.gcd(num_sum, den_sum)
# 기약분수화
num_sum //= gcd
den_sum //= gcd
print(num_sum, den_sum)
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90