์ต์๊ณต๋ฐฐ์(LCM) ํ ๋ฐฉ์ ๋๋ด๊ธฐ: lcm = a*b // gcd(a,b) + ๋์

ํ๋ก๊ทธ๋๋จธ์ค์์ ์์ฃผ ๋์ค๋ ๋ฌธ์ ์ค ํ๋๊ฐ “๋ฐฐ์ด์ ์๋ ์ซ์๋ค์ ์ต์๊ณต๋ฐฐ์(LCM)๋ฅผ ๊ตฌํ๋ผ” ์
๋๋ค.
ํผ๋ณด๋์น์ฒ๋ผ ์ปค์ง ์ ์๋ ๊ฐ๋ ์๋๊ณ , ์ํ ๊ณต์ ํ๋๋ง ์ดํดํ๋ฉด ์ฝ๋๊ฐ ์์ฒญ ๋จ์ํด์ ธ์.
ํต์ฌ ์์ด๋์ด 1) GCD(์ต๋๊ณต์ฝ์)์ LCM(์ต์๊ณต๋ฐฐ์)์ ๊ด๊ณ
๋ ์ ์ a, b์ ๋ํด ๋ค์์ด ํญ์ ์ฑ๋ฆฝํฉ๋๋ค.
- lcm(a, b) = a * b // gcd(a, b)
์๋๋ฉด, g = gcd(a,b)๋ผ๊ณ ํ ๋
a = g * a', b = g * b'๋ก ์ธ ์ ์๊ณ (๊ณตํต์ธ์ g๋ฅผ ๋ฝ์๋ธ ํํ),
์ด๋ a'์ b'๋ ์๋ก์๋ผ์(๊ฒน์น๋ ์ธ์๊ฐ ์์) ๋ ์๋ฅผ ๋ชจ๋ ํฌํจํ๋ ์ต์ ๋ฐฐ์๋
- lcm(a,b) = g * a' * b'
๊ฐ ๋ฉ๋๋ค.
๋ํ a*b = (g*a')*(g*b') = g^2 * a' * b' = g * (g*a'*b') = g * lcm(a,b) ์ด๋ฏ๋ก
๊ฒฐ๊ตญ lcm(a,b) = a*b / g๊ฐ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ LCM์ ์ ์์ด๊ธฐ ๋๋ฌธ์ ๋๋์ ์ /๊ฐ ์๋๋ผ ์ ์ ๋๋์ // ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
ํต์ฌ ์์ด๋์ด 2) ๋ฐฐ์ด ์ ์ฒด LCM์ “์์์๋ถํฐ ๋์ ”
๋ฐฐ์ด arr = [a, b, c, ...]์ ์ต์๊ณต๋ฐฐ์๋
- lcm(a, b, c, ...) = lcm(lcm(a, b), c, ...)
์ฒ๋ผ ์์์ ์๊ด์์ด ๋์ ํด์ ๊ตฌํ ์ ์์ต๋๋ค.
์ฆ,
- ์ฒซ ๋ฒ์งธ ๊ฐ์ผ๋ก ์์ํ๊ณ
- ๋ค์ ๊ฐ์ ํ๋์ฉ ํฉ์น๋ฉด์ lcm์ผ๋ก ๊ฐฑ์ ํ๋ฉด ๋!
์ ๋ต ์ฝ๋ (ํ์ด์ฌ)
'๐ฉโ๐ปDeveloper ๐ก > ๐คนโโ๏ธAlgorithm & Coding Test๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ค์ธ๊ณ ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถํ๊ธฐ. (1) | 2026.06.18 |
|---|---|
| MLA 2์ฃผ์ปท ใฑใฑ! (0) | 2026.01.26 |
| ํ์ด์ฌ format() ํ ๋ฐฉ์ ๋๋ด๊ธฐ: ์๋ฆฟ์(0 padding) + ์ด์ง์ ๋ณํ + ์ค์ ์์(๋น๋ฐ์ง๋) (1) | 2026.01.19 |
| Two Pointers(ํฌํฌ์ธํฐ) โ โ์์ชฝ์์ ์ขํ๊ฐ๋ฉฐ O(n)์ผ๋ก ๋๋ด๋ ๊ธฐ์ โ (1) | 2026.01.11 |
| ์ผ์ฑ ์ฝ๋ฉํ ์คํธ ํฉ๊ฒฉ์ ์ ๋ฆฌ (ADV / PRO) (1) | 2026.01.09 |