분수의 덧셈 - Python

2023. 9. 17. 18:36공부/📝 프로그래머스

# 유클리드 호제법

# 최대공약수
def GCD(x, y):
    while y:
        x, y = y, x % y
    return x


# 최소공배수
def LCM(x, y):
    result = (x * y) // GCD(x, y)
    return result


def solution(numer1, denom1, numer2, denom2):
    answer = []
    temp_numer = numer1 * denom2 + numer2 * denom1
    temp_denom = denom1 * denom2
    temp_GCD = GCD(temp_numer, temp_denom)
    answer = [temp_numer/temp_GCD, temp_denom/temp_GCD]
    return answer


# Test Cases
print(solution(1, 2, 3, 4))
print(solution(9, 2, 1, 3))

유클리드 호제법으로 풀었습니다.

아래는 다른 사람들의 풀이를 보고 배울 점을 적었습니다.

 


from fractions import Fraction

def solution(denum1, num1, denum2, num2):
    answer = Fraction(denum1, num1) + Fraction(denum2, num2)
    return [answer.numerator, answer.denominator]

그런데 파이썬에서는 이미 함수 구현이 되어있었네요. 신기합니다.

 


import math

def solution(denum1, num1, denum2, num2):
    denum = denum1 * num2 + denum2 * num1
    num = num1 * num2
    gcd = math.gcd(denum, num)
    return [denum//gcd, num//gcd]

심지어 gcd 함수도 이미 있습니다. 번거롭게 선언해서 풀어버렸네요.

 


 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

피자 나눠 먹기 (1) - Python  (0) 2023.09.19
짝수는 싫어요 - Python  (0) 2023.09.19
최빈값 구하기 - Python  (0) 2023.09.19
나머지 구하기 - Python  (0) 2023.09.19
몫 구하기 - Python  (0) 2023.09.16