# ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/12940?language=python3
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
# ๋ฌธ์ ์์ฝ
์ต๋๊ณต์ฝ์ (gcd), ์ต์๊ณต๋ฐฐ์ (lcm) ๊ตฌํ๊ธฐ
# ํต์ฌ ๊ฐ๋
1. ์ต๋๊ณต์ฝ์(Greatest Common Divisor, GCD)
์ต๋๊ณต์ฝ์๋ ๋ ์์ฐ์์ ๊ณตํต๋ ์ฝ์ ์ค ๊ฐ์ฅ ํฐ ์๋ฅผ ์๋ฏธํ๋ค.
๋๊ฐ์ ์์ฐ์๋ฅผ 1~N๊น์ง ๋๋์ด ๊ณตํต๋๋ ๊ฒ์ ์ฐพ์ ๊ทธ ์ค max ๊ฐ์ ๊ตฌํ๋ฉด ๊ตฌํ ์ ์๊ฒ ์ง๋ง ๋์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
์ด์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ฐ๋จํ๊ฒ ํ ์ ์๋ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ:
2๊ฐ์ ์์ฐ์ a, b(a > b)์ ๋ํด์ a๋ฅผ b๋ก ๋๋ ๋๋จธ์ง๊ฐ r์ผ ๋,
a์ b์ ์ต๋๊ณต์ฝ์๋ b์ r์ ์ต๋๊ณต์ฝ์์ ๊ฐ๋ค.
def gcd(a, b):
while b:
r = a % b
a, b = b, r
return a
์๋๋ฉด ํ์ด์ฌ์ ๋ด์ฅ๋์ด ์๋ import math ํ math.gcd๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค!
import math
math.gcd(a, b)
โป ๋ง์ฝ from ~ import ๊ผด๋ก ์ฌ์ฉํ๋ค๋ฉด
math. ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ๋ก ํจ์๋ฅผ ํธ์ถํ ์ ์๋ค!
from math import gcd
print(gcd(10,3)) # 1
print(gcd(12,4)) # 4
2. ์ต์๊ณต๋ฐฐ์ (Least Common Multiple, LCM)
์ต์๊ณต๋ฐฐ์๋ ๋ ์์ฐ์์ ๊ณตํต๋ ๋ฐฐ์ ์ค ๊ฐ์ฅ ์์ ์๋ฅผ ์๋ฏธํ๋ค.
์ต์๊ณต๋ฐฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์๋ค.
์ต์๊ณต๋ฐฐ์ = ๋ ์์ฐ์์ ๊ณฑ / ์ต๋๊ณต์ฝ์
import math
def lcm(a, b):
return a*b // math.gcd(a, b)
# ๋ฌธ์ ์ ๋ต
def solution(n, m):
answer = [gcd(n,m), lcm(n,m)]
return answer
def gcd(a,b):
while b:
r = a % b
a,b = b,r
return a
def lcm(a,b):
return a*b // gcd(a,b)