파이썬 코딩테스트 DAILY 풀이 도전 5회차😉
문제를 풀고싶은 사람은 아래 링크로 접근!
https://school.programmers.co.kr/learn/courses/30/lessons/120808
임의의 분수를 더하고, 그 분수를 기약 분수로 나타내어 배열에 담아보자.
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.
'언어 > Python' 카테고리의 다른 글
파이썬 코딩테스트 DAILY 풀이 도전 [문자 리스트를 문자열로 변환하기] (0) | 2023.06.12 |
---|---|
파이썬 코딩테스트 DAILY 풀이 도전 [문자열 겹쳐쓰기] (0) | 2023.06.12 |
[Programmers school] 파이썬 조건문 if문에 대해서 (0) | 2022.11.13 |
[Programmers school] 두수의 나눗셈 (feat. import 정의, 사용 방법) (0) | 2022.11.11 |
[Programmers school] 두수의 차, 몫 구하기 (0) | 2022.11.10 |