[프로그래머스] 분수의 덧셈 - python

h222ji·2022년 10월 13일
0
import math

def LCM(n1, n2): #최소공배수
    temp = math.gcd(n1, n2)
    return n1*n2/temp

def solution(denum1, num1, denum2, num2):
    top = denum1*num2 + denum2*num1
    bottom = num1*num2
    n = math.gcd(top, bottom)
    if n == 1:
        return [top, bottom]
    else:
        return [top/n, bottom/n]
       
  • python 3.9부터 math.lcm을 지원하기때문에 프로그래머스에서는 사용불가 -- 실제로 코드에서 사용은 안함
  • 처음에는 최소공배수를 먼저 구한후 최소공배수로 분모를 지정후, 기존 분모에서 최소공배수를 나누고.... 암튼 엄청 복잡하게 다가갔다가 처음부터 다시 해보자하고 다 지우고 시작했다
  1. 그냥 num1*num2를 분모로 갖는 분수의 덧셈을 진행
  2. 분모와 분자의 최대공약수가 1이어야 기약분수가 된다
  3. 조건문으로 최대공약수가 1인 경우와 아닌 경우를 분리하여 진행
  4. 조건1(gcd==1)은 기약분수이므로 그대로 return
  5. 조건2(gcd!=1)은 분모와 분자의 최대공약수로 각각 나눠주고 return
profile
희지야 블로그 좀 쓰쟈.. plz....

0개의 댓글