핀아의 저장소 ( •̀ ω •́ )✧
[Programmers] Lv.0 분수의 덧셈 본문
📖 문제
✏️ 내가 만든 코드
def solution(numer1, denom1, numer2, denom2):
# 최소공배수 구하는 공식
for i in range(max(denom1,denom2), (denom1*denom2) + 1):
if i % denom1 == 0 and i % denom2 == 0:
common1 = i
break
# 최소공배수와 분모가 얼마나 차이나는지 구한 후 분자에 곱해줌
a = int(numer1 * (common1 / denom1))
b = int(numer2 * (common1 / denom2))
#[분자, 분모]
tot = [a+b, common1]
# 최대공약수 구하는 공식
for j in range(min(tot[0], tot[1]), 0, -1):
if tot[0] % j == 0 and tot[1] % j == 0:
common2 = j
break
# 기약분수 만드는 공식
answer = [tot[0]/common2, tot[1]/common2]
return answer
💡 더 효율적인 답
from fractions import Fraction
def solution(numer1, denom1, numer2, denom2):
answer = Fraction(numer1, denom1) + Fraction(numer2, denom2)
return [answer.numerator, answer.denominator]
1. Fraction 함수는 기약분수를 만들어주는 함수이다.
2. 분자의 값은 numerator로, 분모의 값은 denominator로 알 수 있다.
참고
'Computer Science > 코딩테스트_Python' 카테고리의 다른 글
[Programmers] Lv.0 피자 나눠 먹기 (1) (0) | 2023.04.13 |
---|---|
[Programmers] Lv.0 최빈값 구하기 (0) | 2023.04.13 |
29일차(2020-12-16) (0) | 2020.12.16 |
28일차(2020-12-15) (0) | 2020.12.15 |
27일차(2020-12-14) (0) | 2020.12.14 |
Comments