문제풀이/프로그래머스

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

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;
}
반응형