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

문제 설명

  • 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수 만들기.
    -배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환.
    -예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야.

풀이 1

class Solution {
public int[] solution(int n, int m) {
        int[] answer = new int[2];
        int max = Math.max(n, m);
        int min = Math.min(n, m);
        int temp = 1;
        
        while(temp!=0){
            temp = max % min;
            max = min;
            min = temp;
        }
    
        answer[0] = max;
        answer[1] = (m * n) / answer[0];
        return answer;
    }
}

풀이 2

-재귀 함수 활용

class Solution {
public int[] solution(int n, int m) {
        int[] answer = new int[2];
        int max = Math.max(n, m);
        int min = Math.min(n, m);
        
        answer[0] = gcd(max,min);
        answer[1] = (m * n) / answer[0];
        
        return answer;
    }
    
    static int gcd(int x, int y){
        while(y != 0){
            int temp = x % y;
            x = y;
            y = temp;
        }
        return x;
    }
}

좋은 웹페이지 즐겨찾기