유클리드 호제법을 통해 최대공약수를 구할 수 있다
유클리드 호제법
2개의 자연수에 대해서. a 를 b로 나눈 나머지를 r 이라고 한다면. ( 단, a > b )
a와 b의 최대 공약수는 b와 r의 최대공약수와 같다.
이 성질에 따라 b를 r로 나눈 나머지를 구하는 과정을 반복하여.
나머지가 0이 되었을 때, 나누는 수가 a와 b의 최대 공약수다.
#include <string>
#include <vector>
using namespace std;
int gcd(int a,int b) //유클리드 호제법
{
if(b==0) return a;
else return gcd(b,a%b);
}
vector<int> solution(int n, int m) {
vector<int> answer;
int gcd_num = gcd(max(n,m),min(n,m));
answer.push_back(gcd_num);
answer.push_back((n*m)/gcd_num); //최소공배수 = 기존 두 수의 곱 / 최대공약수
return answer;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][LV 1][C++] 2016년 (0) | 2024.02.29 |
---|---|
[프로그래머스][LV 1][C++] [1차] 비밀지 (0) | 2024.02.29 |
[프로그래머스][C++][LV 2] 다리를 지나는 트럭 (0) | 2024.02.13 |
[프로그래머스][C++][LV 2] [1차] 프렌즈4블록 (0) | 2024.02.05 |
[프로그래머스][C++][LV2](DP)땅따먹기 (0) | 2024.02.01 |