반응형
코딩테스트 문제를 풀다보면 최소공약수를 구해야하는 경우가 있다.
이 때, 사용하면 좋은 것이 유클리드 호제법이다.
유클리드 호제법을 자바코드로 표현하면 다음과 같다.
public static int gcd(int p, int q)
{
if (q == 0) return p;
return gcd(q, p%q);
}
계산을 한번 해보도록 하자.
예를 들어 p=7, q=20이라고 하면
(1) gcd(7, 20)
-> q==0이 아니기 때문에 return gcd(20, 7%20) = gcd(20, 7)
(2) gcd(20, 7)
-> q==0이 아니고 20이기 때문에 return gcd(7, 20%7) = gcd(7, 6)
(3) gcd(7, 6)
-> q==0이 아니고 6이기 때문에 return gcd(6, 7%6) = gcd(6, 1)
(4) gcd(6, 1)
-> q==0이 아니고 1이기 때문에 return gcd(1, 6%1) = gcd(1, 1)
(5) gcd(1, 1)
-> q==0이 아니고 1이기 때문에 return gcd(1, 1%1) = gcd(1, 0)
(6) gcd(1, 0)
-> q==0 성립, 따라서 return 1;
1이 리턴되므로 7과 20의 최대공약수는 1임을 알 수 있다.
이제 이를 기억해두었다가 사용해서 코딩테스트에 사용하면 된다!
반응형
'Algorithm > Programmers 입문' 카테고리의 다른 글
[프로그래머스 코딩기초 트레이닝] 배열 만들기4(JAVA) (0) | 2023.10.18 |
---|---|
[프로그래머스 코딩기초 트레이닝] 콜라츠 수열 만들기(JAVA) (0) | 2023.10.12 |
[프로그래머스 코딩기초 트레이닝] 배열 만들기2 (JAVA) (0) | 2023.10.12 |
[프로그래머스 입문] 평행 (JAVA) (0) | 2023.08.16 |
[JAVA] 피자 나눠 먹기(2) (0) | 2023.04.26 |