🧮
Greatest Common Divisor
Greatest Common Divisor - Explanation
쉬움 알고리즘 O(log(min(a,b))) O(1)
Problem Summary
Write a function that returns the greatest common divisor of two numbers.
Go to Problem →Detailed Explanation
이 문제는 **유클리드 호제법(Euclidean Algorithm)**으로 최대공약수를 구하는 방법을 학습합니다. ## 핵심 개념: 최대공약수 (GCD) 최대공약수는 두 수를 모두 나눌 수 있는 가장 큰 수입니다. ### 유클리드 호제법 ```javascript function gcd(a, b) { while (b) { [a, b] = [b, a % b]; } return a; } ``` ### 동작 원리 GCD(a, b) = GCD(b, a % b) - 12와 8의 GCD - GCD(12, 8) → GCD(8, 4) → GCD(4, 0) → 4 ### 재귀 버전 ```javascript const gcd = (a, b) => b ? gcd(b, a % b) : a; ``` ### 왜 작동하는가? - a = b * q + r (a를 b로 나눈 몫 q, 나머지 r) - a와 b의 공약수는 b와 r의 공약수이기도 합니다 - r이 0이 되면 b가 GCD입니다 유클리드 호제법은 약 2300년 전에 고안된 효율적인 알고리즘입니다.
Solution Code
solution.js
function gcd(a, b) {
while (b) {
[a, b] = [b, a % b];
}
return a;
}Key Concepts from This Problem
1. 유클리드 호제법
2. 최대공약수
3. 나머지 연산
4. 재귀
Common Mistakes
✗ a와 b의 순서는 알고리즘이 자동으로 처리합니다
✗ while 조건에서 b가 0이면 종료됩니다
✗ 구조 분해 할당으로 값을 동시에 교환합니다
Hints
Hint 1: 유클리드 호제법을 사용하세요.
Complexity Analysis
Time Complexity
O(log(min(a,b)))
Space Complexity
O(1)
Uses almost no additional memory
Related Tags
#알고리즘 #GCD #수학