๐๋ฌธ์ ์ค๋ช
์ฒซ ๋ฒ์งธ ๋ถ์์ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ๋ปํ๋ numer1
, denom2
, ๋ ๋ฒ์งธ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ๋ปํ๋ numer2
, denom2
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๋ ๋ถ์๋ฅผ ๋ํ ๊ฐ์ ๊ธฐ์ฝ ๋ถ์๋ก ๋ํ๋์ ๋ ๋ถ์์ ๋ถ๋ชจ๋ฅผ ์์๋๋ก ๋ด์ ๋ฐฐ์ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
โ๏ธํ์ด (Python3)
# ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ์ฌ ์ต๋๊ณต์ฝ์(GCD) ๊ตฌํ๋ ํจ์
def gcd(a, b):
while b:
a, b = b, a % b
return a;
# ์ฃผ์ด์ง ๋ ๋ถ๋ชจ๋ก๋ถํฐ ์ต์๊ณต๋ฐฐ์(LCM) ๊ตฌํ๋ ํจ์
def lcm(a, b):
return a * b // gcd(a, b)
def solution(numer1, denom1, numer2, denom2):
# ๋ ๋ถ๋ชจ์ ์ต์๊ณต๋ฐฐ์(LCM) ๊ณ์ฐํ์ฌ ๊ณตํต ๋ถ๋ชจ๋ก ์ฌ์ฉ
common_denom = lcm(denom1, denom2)
# ๋ถ์ ์ฒ๋ฆฌ
numer1 *= common_denom // denom1
numer2 *= common_denom // denom2
# ๋ถ์๋ผ๋ฆฌ ๋ํ๊ธฐ
result_numer = numer1 + numer2
# ๊ธฐ์ฝ๋ถ์์ธ์ง ํ์ธํ๊ณ return
common_gcd = gcd(result_numer, common_denom)
return [result_numer // common_gcd, common_denom // common_gcd]
๋ ๋ถ์๋ฅผ ๋ํ ๊ฐ์ ๊ธฐ์ฝ ๋ถ์๋ก ๋ํ๋ด๋ผ๊ณ ํ์ฌ '์ต์ ๊ณต๋ฐฐ์๋ก ๋ถ๋ชจ๋ฅผ ๊ตฌํด์ผ๊ฒ ๋ค'๋ผ๊ณ ์๊ฐํ์๊ณ , ๋ฆฌํดํ ๋ 1/12 + 1/4 = 4/12 ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ณ ๋ คํ๊ธฐ ์ํด ๊ธฐ์ฝ ๋ถ์์ธ์ง ํ์ธํ๋๋ก ํ์์ต๋๋ค.
์๊ฐํ ๋ฐฉ๋ฒ์ ์ฝ๋๋ก ๊ตฌํํด์ ๋ฟ๋ฏํฉ๋๋ค ๐ฅ
โ๏ธ ๋ค๋ฅธ ์ฌ๋์ ํ์ด
๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด๊ณ ๋๋ ๊ฐ๊ตฌ๋ฆฌ๊ฐ ๋์ต๋๋ค ๐ธ
์ฃผ์ด์ง ๋ถ๋ชจ๋ค์ ๊ณฑํ์ฌ ํต๋ถํ๊ณ ๊ทธ ๋ถ๋ชจ์ ๋ง๊ฒ ๋ถ์๋ ์ฒ๋ฆฌ ํด์ฃผ๊ณ , returnํ ๋ ์ต๋๊ณต์ฝ์๋ก ๋๋์ด ๋ถ๋ชจ๊ฐ ์ต์๊ณต๋ฐฐ์์ด๋ฉด์ ๊ธฐ์ฝ๋ถ์์ด๋๋ก ํ๋ฉด ๊น๋ํ๊ฒ ๊ตฌํ ์ ์๋ค๋ ๊ฑธ ์์์ต๋๋ค.
# ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ์ฌ ์ต๋๊ณต์ฝ์(GCD) ๊ตฌํ๋ ํจ์
def gcd(a, b):
while b:
a, b = b, a % b
return a;
def solution(numer1, denom1, numer2, denom2):
# ๋ถ๋ชจ ํต๋ถ
com_denom = denom1 * denom2
# ๋ถ์ ์ฒ๋ฆฌ
numer1 *= denom2
numer2 *= denom1
res_numer = numer1 + numer2
# ๊ธฐ์ฝ๋ถ์ ์ฒ๋ฆฌํ๊ณ return
return [res_numer // gcd(res_numer, com_denom), com_denom // gcd(res_numer, com_denom)]
์ถ๊ฐ์ ์ผ๋ก math, fractions ๋ชจ๋์ ์ฌ์ฉํ ํ์ด๋ ์์์ต๋๋ค. Fractions๋ ํ์ด์ฌ์์ ๋ถ์ ๊ณ์ฐ์ ์ํ ๋ชจ๋์ ๋๋ค.
Fraction(๋ถ์, ๋ถ๋ชจ) ํํ๋ก ๋ง๋ค์ ์๊ณ ๋ถ์์ ๊ฐ์ numerator๋ก ๋ถ๋ชจ์ ๊ฐ์ denominator๋ก ์ ์ ์์ต๋๋ค.
from fractions import Fraction
def solution(numer1, denom1, numer2, denom2):
answer = Fraction(numer1, denom1) + Fraction(numer2, denom2)
return [answer.numerator, answer.denominator]
๋ชจ๋์ ์ ๋ฐฐ์๋๋ค๊ฐ ๊ธฐ๋ณธ์ด ์กฐ๊ธ ๋ ํํํด์ง๋ฉด ๊ทธ๋๋ถํฐ ์ฌ์ฉํด์ผ๊ฒ ์ต๋๋ค. ๐
[๋ฌธ์ ์ถ์ฒ] https://school.programmers.co.kr/learn/courses/30/lessons/120808
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr