https://www.acmicpc.net/problem/1735
1735번: 분수 합
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
www.acmicpc.net
# 1735 - Python 3
import sys
input = sys.stdin.readline
def gcd(a, b):
while b > 0:
a, b = b, a % b # 유클리드 호제법
return a
x, a = map(int, input().split())
y, b = map(int, input().split())
lower = a * b # 약분 전 분모
upper = x * b + y * a # 약분 전 분자
gcd = gcd(lower, upper)
print(upper // gcd, lower // gcd)
< line 5 ~ 9 >
- 유클리드 호제법의 사용
: 숫자 a, b에서 a, b의 최대공약수는 a % b와 b의 최대공약수와 같다.
: 위의 반복문에서 b가 0이 될 때 까지, 유클리드 호제법을 진행하여 최대공약수 찾음
: 최대공약수 gcd 외의 약수를 찾을 필요가 없으므로 시간 줄임
'코딩' 카테고리의 다른 글
| [Python] 백준 #4134. 다음 소수 (0) | 2023.03.20 |
|---|---|
| [Python] 백준 #2485. 가로수 (0) | 2023.03.20 |
| [Python] 백준 #13241. 최소공배수 (0) | 2023.03.20 |
| [Python] 백준 #1934. 최소공배수 (0) | 2023.03.20 |
| [Python] 백준 #1271. 엄청난 부자2 (0) | 2023.03.20 |