코딩테스트(Level 0~1)

[JAVA, Programmers] 최대공약수와 최소공배수(자바)

justdoIT0730 2022. 11. 22. 12:54
728x90
728x90

1. 문제 설명

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

 

2. 제한 사항

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

 

3. 입출력

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

4. 입출력 설명

- 입출력 #1
위의 설명과 같습니다.

- 입출력 #2
자연수 2 5 최대공약수는 1, 최소공배수는 10이므로 [1, 10] 리턴해야 합니다.

 

import java.util.*;
class Solution {
    public int[] solution(int n, int m) {
        int [] answer = new int [2];
        int min = (n<m) ? n : m;					//1
        int max =0;
        for(int i=1; i<=min; i++) if(n%i==0 && m%i==0) max =i;		//2
        
        answer[0] = max;//최대공약수
        answer[1] = n*m/max;//최소공배수
		return answer;
    }
}

 

//1 

n, m 중 더 작은 값을 구한다.

//2 

유클리드 호제법 사용

유클리드 호제법 또는 유클리드 알고리즘은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나.
호제법이란 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘

 

n, m을 같은 수(i)로 나누어 떨어진다는 조건 범위 내 i를 증가시켜 두 수의 최대공약수(max)를 구할 수 있다.

 

n과 m을 곱하여 최대공약수(max)로 나누면 최소공배수를 구할 수 있다.

 

 

728x90

 

 

[출처]

https://develop-sense.tistory.com/28

 

[java] 최대공약수 최소공배수 구하기

안녕하세요. 소다맛사탕 입니다. 오늘은 자바를 이용해 유클리드 호제법, 즉 최대공약수와 최소공배수를 구하는 알고리즘을 짜보았습니다. ※ 유클리드 호제법 유클리드 호제법 또는 유클리드

develop-sense.tistory.com

 

728x90
728x90