네카라쿠배 취준반 - 프로그래머스 문제 풀이
[프로그래머스] 분수의 덧셈 문제 풀이(코딩테스트 입문 Lv. 0) - 파이썬 python
개발자로 취직하기
2022. 12. 8. 19:15
0. 자세한 설명은 YouTube 영상으로
1. 단순 gcd를 활용한 Solution
# ver1
def solution(denum1, num1, denum2, num2):
# 1. 두 분수의 합 계산
boonmo = num1 * num2
boonja = denum1 * num2 + denum2 * num1
# 2. 최대공약수 계산
start = max(boonmo, boonja)
gcd_value = 1
for num in range(start, 0, -1):
if boonmo % num == 0 and boonja % num == 0:
gcd_value = num
break
# 3. gcd 로 나눈 값을 answer에 담기
answer = [boonja / gcd_value, boonmo / gcd_value]
return answer
2. 최적화된 gcd를 활용한 Solution
# ver2
def gcd(a, b):
if a % b == 0:
return b
return gcd(b, a % b)
def solution(denum1, num1, denum2, num2):
# 1. 두 분수의 합 계산
boonmo = num1 * num2
boonja = denum1 * num2 + denum2 * num1
# 2. 최대공약수 계산
gcd_value = gcd(boonmo, boonja)
# 3. gcd 로 나눈 값을 answer에 담기
answer = [boonja / gcd_value, boonmo / gcd_value]
return answer
3. math library 를 활용한 Solution
# ver3
import math
def solution(denum1, num1, denum2, num2):
# 1. 두 분수의 합 계산
boonmo = num1 * num2
boonja = denum1 * num2 + denum2 * num1
# 2. 최대공약수 계산
gcd_value = math.gcd(boonmo, boonja)
# 3. gcd 로 나눈 값을 answer에 담기
answer = [boonja / gcd_value, boonmo / gcd_value]
return answer