본문 바로가기
Java/알고리즘

최대공약수와 최소공배수

by 티코딩 2024. 2. 6.

간만에 들어보는 최대공약수와 최소공배수

 

최대공약수는 유클리드 호제법을 사용했다.

 

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에선 자료구조가 안나와서 지능이 떨어지는것같다.

'Java > 알고리즘' 카테고리의 다른 글

JadenCase 문자열  (1) 2024.02.08
다시 lv2로  (0) 2024.02.07
3진법 뒤집기  (0) 2024.02.05
직사각형 별찍기  (0) 2024.02.02
행렬의 덧셈  (0) 2024.02.01