핀아의 저장소 ( •̀ ω •́ )✧

[Programmers] Lv.0 분수의 덧셈 본문

Computer Science/코딩테스트_Python

[Programmers] Lv.0 분수의 덧셈

_핀아_ 2023. 4. 12. 17:32

📖 문제

 

✏️ 내가 만든 코드

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로 알 수 있다.

 

 

참고

https://wikidocs.net/106676

'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