-
프로그래머스 - 최대공약수와 최소공배수알고리즘 2022. 1. 31.반응형
내 풀이 - 자바
class Solution { public int[] solution(int n, int m) { int [] answer = new int[2]; answer[0] = gcd(n, m); answer[1] = (n*m) / answer[0]; return answer; } public static int gcd(int a, int b) { if(b == 0) { return a; } else { return gcd(b, a%b); } } }
최대공약수(gcd)
최소공배수(lcm)
을 구하기 위해서 유클리드 호제법 알고리즘을 사용했다. (재귀 호출 사용)
최대공약수 GCD(Greatest Common Divisor)
최대공약수는 두 자연수의 공통된 약수 중 가장 큰 수를 의미한다.ex) 72 와 30의 최대공약수는 6이다.최소공배수 LCM(Least Common Multiple)
최소공배수는 두 자연수의 공통된 배수 중 가장 작은 수를 의미한다.최소공배수 = 두 자연수의 곱 / 최대공약수ex) 72 와 30의 최소공배수는 360이다.
즉 최대공약수를 구한다면 최소공배수를 쉽게 구할 수 있다.
먼저 최대공약수를 구하기 위해서 사용하는것이 유클리드 호제법
코드로 보는게 더 이해하기 쉽다.
public static int gcd(int a, int b) { if(b == 0) { return a; } else { return gcd(b, a%b); } }
b가 0이면 a가 최대공약수임
즉 재귀를 사용해서 b가 0이 될때까지 a%b를 계속 해주는 것
최대공약수를 구하면 최소공배수는
public int[] solution(int n, int m) { int [] answer = new int[2]; answer[0] = gcd(n, m); answer[1] = (n*m) / answer[0]; return answer; }
매개변수 인자 n,m을 곱하고 나누기 최대공약수를 하면 그게 최소공배수이다.
출처:https://myjamong.tistory.com/138
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 정수 제곱근 판별 (0) 2022.04.23 프로그래머스 - 제일 작은 수 제거하기 (0) 2022.04.20 프로그래머스 - 짝수와 홀수 (0) 2022.01.30 프로그래머스 - 피보나치 수 (0) 2022.01.26 프로그래머스 - 콜라츠 추측 (0) 2022.01.26