일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Graph
- DFS
- Database
- CS
- Algorithm
- Javascript
- Python
- BFS
- 동적 계획법
- 백준
- network
- frontend
- Data Structure
- react
- Redux
- VIM
- TypeScript
- 알고리즘
- vscode
- 안드로이드
- 리트코드
- 프로그래머스
- 자바
- db
- LeetCode
- git
- DP
- 그레이들
- java
- 다이나믹 프로그래밍
Archives
- Today
- Total
늘 겸손하게
Algorithm - 유클리드 호제법 본문
유클리드 호제법 ( Euclidean algorithm )
두 정수 A, B의 최대공약수를 구하는 알고리즘입니다.
원리
두 정수 a, b가 주어졌을때, a를 b로 나눈 나머지를 r이라고 하자.
a, b의 최대공약수를 (a, b)라고 하면, 다음이 성립한다.
(a, b) = (b, r)
ex)
(1071, 1029) = (1029, 42) = (42, 21) = (21, 0) = 21
코드
public int gcd(int p, int q) {
if (q == 0) return p;
return gcd(q, p % q);
}
팁 : 큰 숫자를 첫 번째 인자로 주어야 불필요한 재귀 1번을 아낄 수 있다.
'Algorithm' 카테고리의 다른 글
Java 진법 변환 (10진수 -> N진수, N진수 -> 10진수) (0) | 2023.07.26 |
---|---|
Algorithm - 버블 정렬 (0) | 2023.07.21 |
Algorithm - 플로이드 워셜 알고리즘 (0) | 2023.07.16 |
Algorithm - 소수 판단 (0) | 2023.07.15 |
Algorithm - 순열, 조합, 중복순열, 중복조합 (Java) (0) | 2023.07.11 |