본문 바로가기

Python/Python Coding Practice

LV0. 분수의 덧셈

문제 설명

첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 0 <denum1, num1, denum2, num2 < 1,000

입출력 예

denum1 num1 denum2 num2 result
1 2 3 4 [5, 4]
9 2 1 3 [29, 6]

입출력 예 설

 

입출력 예 #1

  • 1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.

입출력 예 #2

  • 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.

 

 

정답

 

python3에서 기약분수의 경우 fractions 라이브러리를 통해 쉽게 구현 가능합니다.
구현 이후, 리턴 값의 형태는 fraction(a,b)의 형태이기 때문에 분자와 분모를 각각 추출 하고 싶을때는
분자 => 변수이름.numerator
분모 => 변수이름.denominator
를 이용하여 분자와 분모를 각각 추출한 이후
리스트 answer에 각각의 값을 append()함수로 추가하면 됩니다.
아래 소스코드 첨부했습니다.

 

import fractions
def solution(denum1, num1, denum2, num2):
    answer = []
    solution = 0
    bunsu1 = fractions.Fraction(denum1, num1)
    bunsu2 = fractions.Fraction(denum2, num2)
    solution = bunsu1 + bunsu2
    answer.append(solution.numerator)
    answer.append(solution.denominator)
    return answer

 

 



 

math.gcd 함수 설명

* 함수 모양
math.gcd( 숫자들 )

* 함수 설명
gcd의 인자로 숫자들을 입력할 수 있습니다. 즉, 인자는 0개부터 N개 까지 올 수 있습니다.
gcd는 인자로 들어온 숫자들의 최대 공약수(정수)를 반환합니다.

인자가 0개인 경우 math.gcd() 일 때 함수의 반환 값은 0입니다.
모든 인자의 값이 0인 경우에도 math.gcd(0) 혹은 math.gcd(0,0,0.. 0)인 경우에도 함수의 반환 값은 0입니다.

math.gcd 함수 간단 사용법

import math # 꼭 해줘야 합니다.
math.gcd(3) # 3 반환
math.gcd(3, 6) # 3 반환
math.gcd(66, 22, 11) # 11 반환

* 최대 공약수란?
둘 이상의 정수의 공약수 중에서 가장 큰 것을 말합니다.
greatest common divisor 라 부르며 약자로 gcd 라 합니다. 이 약자를 그대로 함수 이름으로 사용하는 걸로 보입니다.

 

math.lcm 함수 설명

* 함수 모양
math.lcm ( 숫자들 )

* 함수 설명
lcm 함수도 인자로 여러 숫자들을 입력할 수 있습니다. 인자는 0개부터 N개 까지 올 수 있습니다.
숫자들은 1,2,3, 이런 식으로 나열을 해서 집어넣으면 됩니다.

lcm는 인자로 들어온 숫자들의 최소공배수를 반환합니다. 반환 값은 양의 정수입니다.

인자가 없는 경우(인자가 0개) 경우에, 즉 math.lcm() 은 함수의 반환 값은 1입니다.
인자 중에 하나라도 0인 경우에는 당연하게도 0이 반환됩니다. 0이 인자로 하나라도 있다면 최소 공배수를 반환하기 때문에 0을 반환하겠죠?

 

math.lcm 함수 간단 사용법

import math # 필수..!
math.lcm(2) # 2 반환
math.lcm(2, 4) # 4 반환
math.lcm(66, 22, 11) # 66 반환

* 최소 공배수란?
둘 이상의 정수의 공배수 중에서 가장 작은 것을 말합니다.
least common multiple을 줄여서 lcm이라 부르고, 이것으로 함수 이름을 정한 것으로 판단됩니다.

 

 

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]