문제풀이/프로그래머스
[프로그래머스] 최대공약수와 최소공배수
Hyeon-Uk
2021. 6. 12. 16:01
반응형
https://programmers.co.kr/learn/courses/30/lessons/12940
코딩테스트 연습 - 최대공약수와 최소공배수
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의
programmers.co.kr
-풀이-
gcd알고리즘을 이용하여 최대공약수를 구한다. 그다음 n*m/gcd = 최소공배수를 이용하여 최소공배수도 구한다.
-시간복잡도-
모든 로직이 단순 계산이기때문에 O(1)이 된다.
-코드-
#include <string>
#include <vector>
using namespace std;
int gcd(int a,int b){
if(b==0){
return a;
}
return gcd(b,a%b);
}
vector<int> solution(int n, int m) {
vector<int> answer;
if(n<m){
int temp=n;
n=m;
m=temp;
}
int _gcd=gcd(n,m);
answer.push_back(_gcd);
answer.push_back(n*m/_gcd);
return answer;
}
반응형