본문 바로가기
알고리즘/프로그래머스 풀이

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

by krapoi 2021. 11. 13.
반응형

이번에 풀어볼 문제는 최대공약수와 최소공배수이다.

 

문제 설명

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

 

제한 조건

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

 

이제 코드를 보자

 

public int[] solution(int n, int m) {
        int[] answer = new int[2];
        answer[0] = Multiple(n,m);
        answer[1] = Min(n,m);

        return answer;
    }

    public static int Multiple(int num1, int num2){
        if(num2 == 0) return num1;
        else return Multiple(num2,num1 % num2);
    }

    public int Min(int n1, int n2){
        return n1 * n2 / Multiple(n1,n2);
    }

int 배열을 2칸으로만들고,

첫 번째 배열에는 최대공약수를 구하고

두 번째 배열에는 최소공배수를 구해서 넣어준다.

 

이제 함수를 설명하겠다.

Multiple은 int 매게 변수를 2개받고 num2가 0이 될때까지 재귀함수로 호출해준다.

이때 num2부분에는 num1 / num2의 나머지 값을 넣어준다.

 

Min함수를 살펴보자.

Min 함수도 int 매게변수를 2개를 받는다.

매게변수 2개를 곱한 뒤 최대공약수로 나눈 값을 리턴해준다.

 

이번에는 간단한 수학 문제이기 때문에 쉬웠던 것 같다.

굳이 함수로 만들지 않고 solution에 때려 박아도 된다.

 

반응형