나의 공부 일기

Python) 프로그래머스 Lv0 분수의 덧셈 문제풀이 본문

프로그래머스/입문

Python) 프로그래머스 Lv0 분수의 덧셈 문제풀이

곽병권 2023. 10. 20. 13:33
728x90

분수의 덧셈

첫번째 분수의 분자를 뜻하는 numer1 과 분모를 뜻하는 denom1이 있고,

두번째 분수의 분자를 뜻하는 numer2 와 분모를 뜻하는 denom2이 있습니다.

이들을 합친 값을 기약분수로 나타냈을 때 분자와 분모를 순서대로 담은 리스트를 반환하게 만들면 됩니다.

여기서 분수의 덧셈은 분모의 값을 같게 맞춰준다음 약분을 하면 되는것인데 문제에서는 기약분수 즉 약분을 할 필요없이 분자와 분모를 순서대로 배열에 담아주면 됩니다.

 

초기값

def solution(num1, num2):
    answer = 0
    return answer

파이썬에서는 import로 패키지를 불러올 수 있습니다. 

그중 math를 불러와 사용해보겠습니다.

math 에는 그 수의 최소공배수를 구하는 gcd 라는 함수가 있습니다.

기약분수 분자: 첫번째 분수의 분자* 두번째 분수의 분모 와 두번째 분수의 분자 * 첫번째 분수의 분모 를 합친 변수를 생성합니다.

기약분수 분모 : 첫번째 와 두번째 분수의 분모들의 곱을 한 변수를 생성합니다.

 

최소공배수 = math.gcd(기약분수의 분자,기약분수의 분모) 를 하여 최소공배수를 찾습니다.

 

결과값에 분모가 가장 작게 만들어줘야 하므로 분자 분모 각각 // 최소공배수를 해줍니다.

import math
def solution(numer1, denom1, numer2, denom2):
    numer = numer1*denom2+numer2*denom1
    denom = denom1*denom2
    gcd = math.gcd(denom,numer)

    answer = [numer//gcd,denom//gcd]

    return answer
728x90