반응형
https://programmers.co.kr/learn/courses/30/lessons/12940
유클리드 호제법을 사용한다
temp를 n%m 값인 나머지라고 가정하면
GCD(n, m) == GCD(m, temp) 이된다.
n 은 이전의 m , m은 n%m 값인 temp가 들어가고, m이 0일때까지 계속 반복하면
m값이 0일때 n값이 최대공약수가 된다.
ex ) GCD(10, 3) -> GCD(3, 1) -> GCD(1, 0)
최소공배수 = 주어진수1 * 주어진수2 / 최대공약수
ex) 최소공배수 = n * m / temp
class Solution {
public int[] solution(int n, int m) {
int[] answer = new int[2];
answer[0] = GCD(n, m);
answer[1] = n * m / answer[0];
return answer;
}
static int GCD(int x, int y){
while(y != 0){
int temp = x%y;
x = y;
y = temp;
}
return x;
}
}
반응형
'코딩테스트 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 1단계 - 하샤드 수 (0) | 2021.08.19 |
---|---|
프로그래머스 1단계 - 핸드폰 번호 가리기 (0) | 2021.08.19 |
프로그래머스 1단계 - 정수 제곱근 판별 (0) | 2021.08.19 |
프로그래머스 1단계 - 콜라츠 추측 (0) | 2021.08.19 |
프로그래머스 1단계 - 제일 작은 수 제거하기 (0) | 2021.08.19 |