[python_파이썬_Fraction함수]백준_1735번_분수 합_풀이

2024. 5. 13. 20:38코드리뷰

728x90
반응형

공부하는허딩크 : https://www.youtube.com/live/Po-wyZ1d0yg?feature=shared

최소공배수 부분만 확실히 알고 있다면 바로 넘어갈 수 있는 문제이다.

 

★공배수 관련 정리 : https://heodinkcodingdiary.tistory.com/56

 

[python_파이썬_공배수 시간복잡도_유클리드호제법]백준_1934번_최소공배수_풀이

공부하는허딩크 : https://www.youtube.com/live/0PBsmU7Tfk4?feature=shared일단 수학적 지식 없이 코드를 작성해보자. 개인적으로 함수나 알고리즘 없이 생각나는대로 작성하는 것을 선호한다. 파이썬 프로

heodinkcodingdiary.tistory.com

 

분수의 합을 구하는 것처럼 분모끼리 곱해주고 분자 * 상대방 분모를 해서 더해준다.

그 다음 해당 분수를 기약분수로 만들기 위해서는 각 분자, 분모에 최대공약수로 나눠주면 해결된다.

 

<첫번째 시도 : 맞았습니다.>

최대공약수로 나누면 기약분수가 되는걸 알기 위해서 아래처럼 두 숫자의 약수를 뽑아봤다.

#12, 36
#12 : 1, 2, 3, 4, 6, 12
#36 : 1, 2, 3, 4, 6, 9, 12, 18, 16
import sys
import math
input = sys.stdin.readline

A, B = map(int, input().split())
a, b = map(int, input().split())
son = A*b + a*B
mother = B*b
gcd = math.gcd(son, mother)

print(son//gcd, mother//gcd)

 

<다른사람풀이 참고>

분수관련 함수가 있네. from fractions import Fraction

새로운 코드 학습 : Faction(A, B) => 분수로 나오고 기약분수로 만들어 준다.

answer.numerator : 분자, answer.denominator : 분모 : 따로 인덱싱은 안되네....

import sys
import math
from fractions import Fraction
input = sys.stdin.readline

A = input().strip().split()
B = input().strip().split()
answer = Fraction(A[0] +'/'+ A[1]) + Fraction(B[0]+'/'+ B[1]) #31/35
answer_a = Fraction(int(A[0]), int(A[1])) + Fraction(int(B[0]), int(B[1])) #31/35

print(answer.numerator, answer.denominator)

 

728x90
반응형