본문 바로가기
PS/programmers

[Lv. 0] 분수의 덧셈 (Python)

by 강렬한 스포트라이트 2023. 2. 9.
반응형

안녕하세요. 

강렬한 스포트라이트 입니다!

 

하기의 문제를 Python 언어를 사용하여 구현하고자 합니다.

 

<문제 설명>

첫 번째 분수의 분자와 분모를 뜻하는 numer1denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

<제한 사항>

0 <numer1, denom1, numer2, denom2 < 1,000

 

<입출력 예>

numer1    denom1  numer2 denom2 result
1 2 3 4 [5,4]
9 2 1 3 [29,6]

 

 

1) 해당 문제를 어떻게 풀지 비교적 상세하게 정리해봅니다.

 

 

2) 최대공약수를 구해주는 gcd()함수를 사용하지 않고 구현한 코드입니다.

 

def solution(numer1, denom1, numer2, denom2):
    d=denom1*denom2; n=numer1*denom2+denom1*numer2
    for i in range(min(d,n),0,-1): #최대공약수 gcd함수 사용하지 않고 구현함
        if d%i==0 and n%i==0:
            gcd=i
            break #break를 해줘야 조건을 충족하는 가장 큰 값으로 변수 gcd에 저장될 수 있음
    return [n/gcd,d/gcd]

 

 

3) 추가로 gcd() 함수를 사용하여 구현한 코드입니다.

 

import math #gcd()함수를 사용하고자 import함
def solution(numer1, denom1, numer2, denom2):
    d=denom1*denom2; n=numer1*denom2+denom1*numer2
    gcd=math.gcd(d,n) #gcd()함수 사용
    return [n/gcd,d/gcd]

 

 

 

해보시고 문의사항이 있으시면 댓글로 남겨주세요.´◡`

감사합니다!

 

 

반응형
SMALL