/ PROGRAMING, PYTHON

분수의덧셈

분수의 덧셈

프로그래머스-분수의덧셈

분자, 분모가 다른 2개의 분수를 덧셈하고 기약분수 만드는 문제

# 내 코드
def solution(numer1, denom1, numer2, denom2):
    # 분모 둘의 곱하고 그에 따라 반대 분모와 분자에 곱해 더 해준다.
    answer = [numer1*denom2+numer2*denom1, denom1*denom2]
    
    # 기약 분수 
    while True:
        # 기약 분수가 될 때까지 반복한다.
        check = 1 
        # 분모, 분자의 최소공약수를 찾아서 각각 최소공약수로 나누어준다.
        for i in range(2,min(answer)+1):
            if not answer[0] % i and not answer[1] % i :
                answer = [x//i for x in answer]
                check = 0
                break
        # 최소공약수가 발견되지 않으면 정지
        if check : break 
    return answer

solution(3,4,5,2)
[13, 4]
  • 함수
    • 3/4 + 5/2 = 3/4 + 10/4 = 13/4 (기약분수)
  • 알고리즘
    1. 분모 둘의 곱하고 그에 따라 반대 분모와 분자에 곱해 더 해준다.
    2. 기약 분수가 될 때까지 아래 과정을 반복한다.
    3. 분모, 분자의 최소공약수를 찾아서 각각 최소공약수로 나누어준다.
    4. 최소공약수가 발견되지 않으면 정지
  • 추가 방법