프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
import math
def solution(numer1, denom1, numer2, denom2):
b = denom1 * denom2
a = (numer1 * denom2) + (numer2 * denom1)
gcd=math.gcd(a,b)
a = a // gcd
b = b // gcd
answer = [a, b]
return answer
$\frac{numer1}{denom1}$, $\frac{numer2}{denom2}$ 의 합을 기약분수로 나타내는 문제이다.
처음에는 denom1과 denom2 사이의 관계를 고려하여
1) denom1 % denom2 == 0 일 때,
2) denom2 % denom1 == 0 일 때,
3) denom1과 denom2가 서로소일 때
세가지로 나눠 조건문을 세워보았지만 결국 최종적으로 기약분수 형태로 나타내야 하기 때문에
그냥 서로소인 경우에 계산하는 방식처럼 분자는 분모를 곱해 더하고, 분모는 분모끼리 곱해 합을 먼저 구하는 방식을 택했다.
기약분수로 나타내기 위해서는 분자 분모 사이의 최대공약수를 구해 나눠줘야 한다.
최대공약수를 구하기 위해 math 라이브러리를 사용하여 해결하였다.
math.gcd를 사용하면 쉽게 두 수 사이의 최대 공약수를 구할 수 있다.
* 최소공배수는 math.lcm
반응형