간만에 들어보는 최대공약수와 최소공배수
최대공약수는 유클리드 호제법을 사용했다.
3%12 = 3 다음으로 m을 n의자리로, 나머지를 m의자리로 보내고 계속해서 나머지를 구한다. 그렇게 했을때, 나머지가 0이 될 때 m이 최대공약수가 된다.
다른 예를 보자. n = 20, m = 14 일때
이렇게 되면 나머지가 0이될때의 m의자리는 2이니, 최대공약수는 2가 된다.
최소공배수는 (n * m) / 최대공약수 하면 나온다.
ㅇ 풀이
public int[] solution(int n, int m) {
int[] answer = new int[2];
int a1 = n;
int a2 = m;
while(a2 != 0){
int temp = a1 % a2;
a1 = a2;
a2 = temp;
}
answer[0] = a1;
answer[1] = n * m / a1;
return answer;
}
내일부터 다시 레벨2로 넘어가봐야겠다. lv1에선 자료구조가 안나와서 지능이 떨어지는것같다.