N

(프로그래머스 c++)N개의 최소공배수 본문

프로그래머스 알고리즘/2단계

(프로그래머스 c++)N개의 최소공배수

naeunchan 2020. 5. 20. 11:21
728x90
반응형

최대 공약수를 이용하여 최소 공배수를 구하는 방식을 사용하였다.

gcd(최대 공약수) 함수와 lcm(최소 공배수) 함수를 정의하였다.

for문을 돌면서 arr[i]와 arr[i + 1]의 최소 공배수를 구하여 arr[i + 1]에 다시 넣어주었다.

그래야 다음 최소 공배수를 구할 수 있기 때문이다..!

arr.size() - 1 만큼 반복하면 N개의 최소 공배수를 구할 수 있다..!

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int gcd(int a, int b)
{
    int c;
    while(b != 0)
    {
        c = a % b;
        a = b;
        b = c;
    }
    return a;
}

int lcm(int a, int b)
{
    return a * b / gcd(a, b);
}

int solution(vector<int> arr) {
    int answer = 0;
    
    sort(arr.begin(), arr.end());
    
    for(int i = 0; i < arr.size() - 1; i++)
    {
        answer = lcm(arr[i], arr[i + 1]);
        arr[i + 1] = answer;
    }
    return answer;
}
728x90
반응형