[프로그래머스][파이썬] 분수의 덧셈 - 사칙연산 (Level 0)

뻥튀기아이스크림·2025년 2월 25일
1
post-thumbnail

◽ 문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120808

◽ 문제

◽ 입력 & 출력

◽ 내 풀이

import math

def solution(numer1, denom1, numer2, denom2):
    denom = denom1 * denom2
    numer = (numer1 * denom2) + (numer2 * denom1)
    
    gcd = math.gcd(numer, denom)
    numer = numer // gcd
    denom = denom // gcd
    
    answer = [numer, denom]
    return answer
  • 어렸을 때 수학 문제 대충 한 번에 암산하는 습관 때문에 처음엔 살짝 당황했다.
  • 통분과 기약분수를 어떻게 만드느냐 묻는 문제였던 것 같다.
  • 기약분수를 만드는 과정에서 인자의 최대공약수를 구해주는 math.gcd() 함수를 사용했다.
  • 참고) 이 문제에서 쓸 일은 없지만, 최소공배수를 구해주는 math.lcm() 함수는 2025-02-25 기준 아직 사용 불가하다.

◽ 다른 사람 풀이

from fractions import Fraction

def solution(denum1, num1, denum2, num2):
    answer = Fraction(denum1, num1) + Fraction(denum2, num2)
    return [answer.numerator, answer.denominator]
  • 처음 보는 라이브러리 함수가 등장했다..!
  • fractions.Fraction 함수는 정수, 실수, 문자열, 또는 두 개의 정수를 받아 최대한 정확한 분수 형태로 표현해 준다고 한다.
  • 부동소수점 오차도 보완해주고, 자동 기약분수 변환, 분수 문자열 표현까지 해주니 기억하자.

◽ 더 나아가기

  • Fraction() 함수는 반환 값이 다양하니 상황에 맞게 잘 사용하자.



피드백은 언제나 환영입니다 :)

profile
성장하고 싶은 개발자

0개의 댓글