반응형
문제
구현
분수의 덧셈을 정리해보면 a/b + c/d = (a*d+b*c)/b*d 다.
여기서 추가로 최대공약수를 이용해 약분해주면 된다.
코드
import math
def solution(numer1, denom1, numer2, denom2):
numer = denom1*numer2 + denom2*numer1 #분자
denom = denom1 * denom2 #분모
gcd = math.gcd(denom, numer) #최대공약수 구하기
return [numer//gcd, denom//gcd]
다른 풀이
유클리드 호제법을 써서 최대공약수 구하는 부분을 직접 구현해도 된다.
(참고 https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95)
def gcd(a, b):
while b > 0:
a, b = b, a%b
return a
def solution(numer1, denom1, numer2, denom2):
numer = denom1*numer2 + denom2*numer1 #분자
denom = denom1 * denom2 #분모
g = gcd(denom, numer) #최대공약수 구하기
return [numer//g, denom//g]
반응형
'Coding Test > 프로그래머스 코딩테스트 입문' 카테고리의 다른 글
Python 나머지 구하기 [코딩테스트 입문 - Day3] (0) | 2023.01.16 |
---|---|
Python 짝수는 싫어요 [코딩테스트 입문 - Day3] (0) | 2023.01.16 |
Python 두 수의 나눗셈 [코딩테스트 입문 - Day2] (0) | 2023.01.13 |
Python 배열 두 배 만들기 [코딩테스트 입문 - Day2] (0) | 2023.01.13 |
Python 숫자 비교하기 [코딩테스트 입문 - Day2] (0) | 2023.01.13 |
댓글