알고리즘/프로그래머스 레벨 0 - python

Day2 - 3) 분수의 덧셈

젤리의it 2023. 1. 15. 21:12

프로그래머스 문제: https://school.programmers.co.kr/learn/courses/30/lessons/120808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 풀이

def solution(denum1, num1, denum2, num2):
    answer = []       
    for i in range(max(num1,num2),(num1*num2)+1):
        # 분수로 만들기
        if (i % num1 ==0) & (i % num2 ==0):
            denum3 = (i/num1) * denum1 + (i/num2) * denum2
            num3 = i
            # 기약분수
            for j in range(max(num1,num2),0,-1):
                if (num3 % j ==0) and (denum3 % j == 0):
                    num3 = num3 /j
                    denum3 = denum3/j
            answer.append(denum3)
            answer.append(num3)
            break
    
    return answer

문제를 풀면서 느낀점

분수를 만드는 것까지는 금방했는데 기약분수를 만드는 과정이 어려웠습니다.