언어/Python

[Programmers school] 파이썬 math함수를 이용하여 분수의 덧셈을 해보자

ahgle 2022. 11. 16. 17:43
728x90
반응형

파이썬 코딩테스트 DAILY 풀이 도전 5회차😉 

 

문제를 풀고싶은 사람은 아래 링크로 접근!

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

 

프로그래머스

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

programmers.co.kr

 

 

임의의 분수를 더하고, 그 분수를 기약 분수로 나타내어 배열에 담아보자.

import math

def solution(denum1, num1, denum2, num2):
  answer=[]
  denum = denum*1+num2, denum2*num1
  num = num1*num2
  gcd = math.gcd(denum, num)
  answer = [ denum // gcd, num // gcd]
  return answer

 solution 이라는 사용자 정의함수를 정의하며, denum1, num1, denum2, num2 라는 변수를 선언했다.

그리고 분자와 분모를 각각 따로 담기 위해 answer=[] 배열을 선언했다.

 

*denum 은 denominator (분자)의 약어이다.

 

새로운 분자 denum은 우리가 보통 분수의 합에서 분자를 계산할 때와 같이 분자1x분모2 + 분자2, 분모1로 계산했다.

새로운 분모 num은 두 수를 곱했다.

 

이제 해당 분자와 분모를 기약분수로 나타내야하므로,

math 라이브러리에서 두 수의 최대공약수를 쉽게 구해주는 gcd함수를 이용해보자.

 

math라이브러리는 내장 라이브러리이므로, 단순히 import만 해주면 된다.

(라이브러리 import의 개념은 아래 링크에서 확인 가능하다)

https://wowy0211.tistory.com/25

 

*gcd는 Greatest Common Divisor 의 약어이다.

 

gcd = math.gcd(denum, num)denum 에 담겨있는 수와 num 에 담긴 수의 최대공약수를 math 함수를 이용해서 구하고, 그 값을 gcd라는 변수에 담았다.

 

이렇게 구한 최대공약수 gcd로 각 분자와 분모를 나눠주면, 기약분수의 분자, 분모가 된다.

 

분자, 분모를 각각 담기 위해 배열에 넣어주면 끝!answer=[denum//gcd , num//gcd]

 

// :  나눈셈의 몫 부분만 가져오며, 어챠피 둘다 나눠지는 '공약수'로 나눴기 때문에 무조건 몫만 나오게 된다.

 

 

 

본 포스팅은 개인 공부 복기 목적입니다😶

 

The record makes me strong.

728x90