본문 바로가기

문제 풀이/Programmers

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

문제 출처 - Programmers

문제는 여기

 

코딩테스트 연습 - 최대공약수와 최소공배수

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

programmers.co.kr


[풀이]

1. 최대공약수를 구하는 함수를 만들어준다.

// 최대공약수
public static int gcd(int a, int b) {
    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}

2. 최소공배수를 구하는 함수를 만들어준다.

// 최소공배수
public static int lcm(int x, int y) {
    //0이 아닌 두 수의 곱 / 두 수의 최대공약수
    return (x * y) / gcd(x, y);
}

3. 1. 과 2. 에서 만든 최대공약수와 최소공배수를 배열에 넣어 리턴해준다.

[접근]

1. 최대공약수와 최소공배수를 만들어서 배열에 넣어주면 되겠다고 생각하였다.

[코드]

class Solution {
    public int[] solution(int n, int m) {
        int gcd = gcd(n, m);
        int lcm = lcm(n, m);
        int[] answer = {gcd, lcm};
        
        return answer;
    }
    
    // 최소공배수
    public static int lcm(int x, int y) {
	    //0이 아닌 두 수의 곱 / 두 수의 최대공약수
        return (x * y) / gcd(x, y);
    }

    // 최대공약수
    public static int gcd(int a, int b) {
        if (b == 0) {
            return a;
        }
        return gcd(b, a % b);
    }
}