728x90
반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/120808?language=python3
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
2. Python code
math 함수 쓰면 금방 풀 수 있는데 그냥 최대공약수를 이용해서 푸는 걸로 먼저 풀었다.
def solution(denum1, num1, denum2, num2):
answer = []
num = denum1*num2 + denum2*num1 # 분자
deno = num2*num1 # 분모
gcd = 0
# num과 deno의 최대공약수 구하기
for j in range(min(num,deno), 0, -1):
if num % j == 0 and deno % j ==0:
gcd = j
break
answer = [num//gcd, deno//gcd]
return answer
math 라이브러리 이용해서 푸는 법
import math
def solution(denum1, num1, denum2, num2):
num = denum1 * num2 + denum2 * num1
deno = num1 * num2
gcd = math.gcd(num, deno)
return [num//gcd, deno//gcd]
math 라이브러리 사용해서 하는게 훨씬 빠르다.
728x90
반응형