generated from zeikar/issueage
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
mediumMediumMedium
Description
Problem link
https://leetcode.com/problems/fraction-addition-and-subtraction/
Problem Summary
분수들의 식이 주어질 때 계산하는 문제
Solution
스트링 파싱 후 계산하면 된다.
초등학교 때 배운 분수의 덧셈 그대로 구현하면 되는데 분모는 최소공배수로 맞추고 분자끼리 더한 후 최대공약수로 분자와 분모를 각각 나눠주면 된다.
정규표현식으로 파싱이 깔끔하게 되는거 같은데 난 무식하게... 하나씩 파싱했다 ㅋㅋ
Source Code
class Solution:
def fractionAddition(self, expression: str) -> str:
sign = 1
n = 0
numerators, denominators = [], []
if expression[0] == "-":
sign = -1
expression = expression[1:]
for e in expression:
if e == "-" or e == "+":
denominators.append(n)
n = 0
if e == "-":
sign = -1
else:
sign = 1
elif e == "/":
numerators.append(sign * n)
n = 0
else:
n *= 10
n += int(e)
denominators.append(n)
denominator = 1
g = 1
for d in denominators:
g = gcd(g, d)
denominator *= d
denominator //= g
numerator = 0
for i in range(len(numerators)):
numerator += numerators[i] * (denominator // denominators[i])
g = gcd(numerator, denominator)
return f"{numerator//g}/{denominator//g}"Metadata
Metadata
Assignees
Labels
mediumMediumMedium