์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
์๋ฏธ: ์ต์ด์ ์๊ณ ๋ฆฌ์ฆ
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ(-ไบ้คๆณ, Euclidean algorithm) ๋๋ ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ 2๊ฐ์ ์์ฐ์ ๋๋ ์ ์(ๆดๅผ)์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ํ๋์ด๋ค. (์ถ์ฒ:wikipedia)
์ต๋๊ณต์ฝ์ ๊ตฌํ๊ธฐ
1. a,b ๊ฐ๊ฐ์ ์ฝ์๋ฅผ ๊ตฌํด ๊ณตํต๋๋ ์ฝ์ ์ค ๊ฐ์ฅ ํฐ ๊ฐ ์ฐพ๊ธฐ
2. ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
์ซ์ a,b๊ฐ ์กด์ฌํ ๋, a๋ฅผ b๋ก ๋๋ ๋๋จธ์ง์ b์ ์ต๋ ๊ณต์ฝ์๋ a์ b์ ์ต๋๊ณต์ฝ์๊ฐ ๊ฐ์.
๋ฐ๋ผ์, ๊ณ์ํด์ a๋ฅผ b๋ก ๋๋์ด b๋ฅผ a์, ๋๋ ๋๋จธ์ง๋ฅผ b์ ๋์ ์์ผ b๊ฐ 0์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ฉด ๋จ๋ a๊ฐ์ด ์ต๋ ๊ณต์ฝ์๊ฐ ๋๋ค!
def gcd(a,b):
while b>0:
a,b = b,a%b
return a
์ต์๊ณต๋ฐฐ์
์๋ก ๋ค๋ฅธ ์ a,b์ ๋ฐฐ์์ค์์ ๊ณตํต๋๋ ๋ฐฐ์ ์ค ๊ฐ์ฅ ์์ ๊ฐ.
์ต์๊ณต๋ฐฐ์๋ a,b์ ๊ณฑ์ a,b์ ์ต๋ ๊ณต์ฝ์๋ก ๋๋๋ฉด ๋์ค๊ฒ ๋จ!
def gcd(a,b): #์ต๋๊ณต์ฝ์
while b>0:
a,b = b,a%b
return a
def lcm(a,b): #์ต์๊ณต๋ฐฐ์
return int(a*b/gcd(a,b))
'Problem Solving > ALGORITHM' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ผํ ์คํ ๋ค์ค์ ์ฒด (์์ ๊ตฌํ๊ธฐ) (0) | 2022.06.01 |
---|---|
deque (0) | 2022.05.31 |
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Algorithm) (0) | 2022.05.13 |
์์ด/๊ฐ์ง์น๊ธฐ (0) | 2022.03.15 |
๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ (์์ ํ์ ์๊ณ ๋ฆฌ์ฆ) (0) | 2022.03.11 |
๋๊ธ