ALGORITHM

[?]프로그래머스_level3_N개의 최소공배수

서울소시민 2017. 9. 7. 11:57

문제 :

벡터 2,6,8,14 의 최소공배수를 구하여라


최소공배수 = 두수의 곱 / 최소공약수

최소공약수 -> 유클리드 호제법?


값은 나오는데 정답이 안나온다


#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

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

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

long long nlcm(vector<int> num)
{
	long long answer = 0;
  long long* dp = new long long[num.size()];
  
  dp[0] = num[0];
  
  
  for(int i=1;i<num.size();i++){
  	dp[i] = lcm(num[i],dp[i-1]);
  }

  answer = dp[num.size()-1];
	return answer;
}

int main()
{
	vector<int> test{2,6,8,14};
  
	
	// 아래는 테스트로 출력해 보기 위한 코드입니다.
	cout << nlcm(test);
}