TIL, WIL
23.04.18 Today I Learned
디스타입
2023. 4. 19. 02:48
유클리드 호제법
유클리드 호제법이란?
두 양의 정수 a, b에 대하여 (a>b) r = a%b 일때, a,b의 최대공약수는 b,r의 최대공약수와 같다.
즉, gcd(a,b) = gcd(b,r)이고 r이 0이라면 a,b의 최대공약수는 b 이다.
무려 인류 최초의 알고리즘이라 불린다.
이를 이용하면 알고리즘에 자주 나오는 최대공약수, 최대공배수, 서로소, 분수 덧셈등 다양하게 활용할 수 있다.
자바 코드로 구현해보자
1. 반복문 사용
public int getGcd(int a, int b){
int r = 0;
while(b!=0){
r = a%b;
if(r == 0){
return b;
}
a = b;
b = r;
}
}
이렇게 반복문으로 표현할 수도 있지만 재귀 함수를 사용하면
2. 재귀 함수 사용
public int getGcd(int a, int b){
if( b == 0 ){
return a;
}
return getGcd( b, a%b )
훨씬 더 간결하고 가독성 좋게 구현할 수 있다. (어제 정리한 if문 작성에 대한 규칙을 적용했다!!)
- BLOB, TEXT, VARCHAR의 차이와 사용 방법
- @Coulumn(nullable = false)
- DDL,DML, DCL
if문 작성에 대한 규칙- GeneratedValue AUTO vs IDENTITY
- Optional
- @Allargsconstructorlombok
- Git 플로우 전략
if문 여러개 vs else if 의 차이- @Transactional