Coding Test/Codility
12. μ΅λ곡μ½μ (Greatest Common Divisor, GCD) Codility Lesson νκ΅μ΄ μ 리본 (JavaScript ver.)
chamroro
2025. 3. 2. 16:20
μ΅λ곡μ½μ(GCD)λ?
λ κ°μ μ μ a, bμ μ΅λ곡μ½μ(GCD)λ λ μλ₯Ό λμμ λλ μ μλ κ°μ₯ ν° μ μ λ₯Ό μλ―Ένλ€.
1. O(n) μκ° λ³΅μ‘λμ μ ν΄λ¦¬λ μκ³ λ¦¬μ¦ (λΊμ λ°©μ)
JavaScript μ½λ:
function gcdSubtraction(a, b) {
if (a === b) return a;
return a > b ? gcdSubtraction(a - b, b) : gcdSubtraction(a, b - a);
}
2. O(log n) μκ° λ³΅μ‘λμ μ ν΄λ¦¬λ μκ³ λ¦¬μ¦ (λλ¨Έμ§ λ°©μ)
JavaScript μ½λ:
function gcd(a, b) {
return a % b === 0 ? b : gcd(b, a % b);
}
μ΄ λ°©λ²μ λΉ λ₯΄κ³ , λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μμ κΈ°λ³Έμ μΌλ‘ μ 곡λλ€.
3. μ΅μ곡배μ(LCM) κ³μ°
μ΅μ곡배μ(LCM)λ λ μ a, bμ μ΅μ곡배μλ₯Ό ꡬνλ λ°©λ²μ΄λ€.
function lcm(a, b) {
return (a * b) / gcd(a, b);
}
μ΄ ν¨μλ O(log n) μκ° λ³΅μ‘λλ‘ μ΅μ곡배μλ₯Ό κ³μ°ν μ μλ€.
λ°μν