문제 링크 https://www.acmicpc.net/problem/1735
1735번: 분수 합
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
www.acmicpc.net
문제
분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다. A와 B는 모두 자연수라고 하자.
두 분수의 합 또한 분수로 표현할 수 있다. 두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오. 기약분수란 더 이상 약분되지 않는 분수를 의미한다.
입력
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
출력
첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 사이에 두고 순서대로 출력한다.
풀이
입력
2 7
3 5
분자와 분모의 최대공약수로 분자와 분모를 나누면 기약분수가 된다!!
유클리드 호제법 - https://wikidocs.net/21759
3. 최대공약수 구하기 - 유클리드 호제법
> a와 b 의 최대공약수는 (a를 b로 나눈 나머지)와 b 의 최대공약수와 같다. 큰 수를 작은 수로 나누어 구한 나머지로 큰 수를 대체한다. 큰 수를 작은 수로 계속 나누…
wikidocs.net
코드
def gcd(x, y):
if x % y == 0:
return y
else:
return gcd(y, x % y)
A1, B1 = map(int, input().split())
A2, B2 = map(int, input().split())
x, y = A1*B2+A2*B1, B1*B2 # x = 분자 y = 분모
z = gcd(x, y)
print(x//z, y//z)
'알고리즘 > 백준' 카테고리의 다른 글
4796번: 캠핑 (0) | 2024.06.20 |
---|---|
5585번: 거스름돈 [python] (0) | 2024.06.20 |
27737 버섯농장 [파이썬] (1) | 2024.06.19 |
파이썬 / 1783번: 병든 나이트 (1) | 2024.01.07 |
파이썬 / 9461번: 파도반 수열 (0) | 2024.01.07 |