리꾸므

[프로그래머스 Level1_Java]최대공약수와 최소공배수 본문

발걸음/알고리즘

[프로그래머스 Level1_Java]최대공약수와 최소공배수

리꾸므 2022. 8. 21. 01:37

#36 최대공약수와 최소공배수

문제설명

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수,
solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다.
예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

제한 사항

두 수는 1이상 1000000이하의 자연수입니다.

입출력 예

n m return
3 12 [3, 12]
2 5 [1, 10]

코드

class Solution {
    public int[] solution(int n, int m) {
        int b = 0;   
        int c = 0;
        int a =1;
        int[] answer = new int[2];

        //혹시 몰라서 n,m중 작은 자연수가 b 큰 자연수가 c로 정렬,
        if(n<m){
            b = n;
            c = m;
        }if(n>m){
            b = m;
            c = n;
        }

    //b%i와 c%i ==0이면 공약수임으로 answer[0] ==i
        for(int i = 1;i<=b; i++){
            if(b%i+c%i==0){
                answer[0] = i;
            }
        }

    // c*a가 b로 나눠질때 나머지가 0일경우 최소 공배수임으로 answer[1] =c*a
        for(int i=0; i<c; i++){
            if((c*a)%b==0){
                answer[1] = c*a;
                break; 
            }else{
                a++;
            }
        }
        return answer;
    }
}

여담

결혼식을 가야해서 아침에 급하게하는라
코드를 정리할 틈이 없었다. 많이 조잡한게 느껴지고
더욱 간결하게 할 수 있는 방법이 있을 것 같다.
여유 있을때 복기해야겠다.