알고리즘

[프로그래머스, 파이썬] 분수의 덧셈

hminor 2024. 2. 22. 11:05
반응형

풀이

  • 해당 문제는 분모의 값을 최소 공배수로 맞춰야 하는 문제로
  • 최소 공배수를 찾기 위해선 최대 공약수가 필요하기에
  • 따로 만든 최대 공약수, 최소 공배수를 만들어 사용
  • 이후 기약 분수로 만들어야 하기에
  • 한 번 더 GCD 값인 x로 나눈 몫을 출력하여 해결.

 

def solution(numer1, denom1, numer2, denom2):
   
    def LCM(a,b,gcd):
        return b//gcd*a
   
    def GCD(a,b):
        while a != 0:
            a,b = b%a,a
        return b
   
    lcm = LCM(denom1,denom2, GCD(denom1,denom2))
    a = lcm//denom1*numer1+lcm//denom2*numer2
    x = GCD(a,lcm)

    return [a//x,lcm//x]