문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 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]
'Python > Python Coding Practice' 카테고리의 다른 글
LV.0 최빈값 구하기 (0) | 2022.11.07 |
---|---|
프로그래머스 코딩연습문제 오답노트 LV0. 옹알이 (0) | 2022.10.28 |