본문 바로가기
Coding Test/프로그래머스 코딩테스트 입문

Python 분수의 덧셈 [코딩테스트 입문 - Day2]

by giem 2023. 1. 13.
반응형


문제


구현

분수의 덧셈을 정리해보면 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]

 

 

반응형

댓글