This post is from a low-reputation account and contains an unverified outbound link. Be cautious before clicking external links.
백준 1735번, 2609번, 2702번같이 단순히 분수끼리 계산이나 최대공약수를 구하는 문제는 머릿속으로는 간단히 해결되지만 소스코드로 구현하기에는 살짝 귀찮습니다.
fractions 모듈을 이용해 분수를 간단히 다룰 수 있습니다.
>>> import fractions
>>> fractions.Fraction(1, 2) #fractions.Fraction(분자, 분모)
Fraction(1, 2)
>>> fractions.Fraction(1/3) #fractions.Fraction(분자/분모)
Fraction(1, 3)
>>> fractions.Fraction('1/4') #fractions.Fraction('분자,분모')
Fraction(1, 4)
>>> fractions.Fraction('1.8') #fractions.Fraction('유리수')
Fraction(9, 5)
>>> fractions.Fraction(2,8) #알아서 기약분수로 변환
Fraction(1, 4)
>>> fractions.Fraction(5) #분자만 쓰면 분모는 1로 자동 입력
Fraction(5, 1)
간단하죠?ㅎㅎ
이러한 Fraction객체로 사칙연산도 가능합니다.
>>> import fractions
>>> a = fractions.Fraction(1, 2) #a = 1/2
>>> b = fractions.Fraction(2, 3) #b = 2/3
>>> a+b
Fraction(7, 6)
>>> a-b
Fraction(-1, 6)
>>> a*b
Fraction(1, 3)
>>> a/b
Fraction(3, 4)
>>> a+1
Fraction(3, 2)
>>> a*3
Fraction(3, 2)
역시 간단하죠?ㅎㅎ
분수를 Fraction객체로 다루는 것 까지는 좋은데 분자, 분모값을 따로 받아오고 싶을때는?
numerator, denominator 메소드를 이용하면 됩니다. (각각 분자, 분모라는 뜻)
>>> import fractions
>>> a = fractions.Fraction(13, 24)
>>> a.numerator #분자
13
>>> a.denominator #분모
24
역시 역시 간단하죠?ㅎㅎ
이번엔 최대공약수를 구해봅시다.
gcd 메소드를 이용합니다. (gcd: greatest common divisor, 최대공약수)
>>> import fractions
>>> fractions.gcd(10, 25) #10과 25의 최대공약수
5
>>> fractions.gcd(7, 9) #7과 9의 최대공약수
1
역시 역시 역시 간단하죠?ㅎㅎ
ㅂㅂ (_ _)>