프로그래머스 Lv.1 코딩테스트

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

하다블 2022. 2. 16. 19:56
반응형

문제는 다음과 같습니다.

코딩테스트 연습 - 최대공약수와 최소공배수 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의

programmers.co.kr

 

풀이 코드는 다음과 같습니다.

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n, int m) {
    vector<int> answer;
    int GND=0;
    for(int i{n};i>0;i--)
    {
        if(n%i==0&&m%i==0)
        {
            GND=i;
            break;
        }
    }
    answer.push_back(GND);
    answer.push_back(n*m/GND);
    return answer;
}

최소공배수만 구한다면 어렵지 않게 풀 수 있으며, 최소공배수의 경우에는 어쩔 수 없이 1 이상이면서 주어진 수 보다는 작은 (1≤x≤n) 중에서 주어진 두 수를 나누어서 나머지가 0인 수를 찾아주었고

최소공배수의 경우에는 중학교 수학에서 배운 공식인

최소공배수와 최대공약수의 곱은 두 수의 곱과 같음을 이용하여 구할 수 있습니다.

 

반응형