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

[프로그래머스 Lv.2] N개의 최소공배수

하다블 2022. 2. 16. 21:33
반응형

문제는 다음과 같습니다.

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

 

코딩테스트 연습 - N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배

programmers.co.kr

 

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

#include <string> 
#include <vector> 
#include <iostream> 
using namespace std;
int GCD(int a, int b)
{ 
    while (b > 0) 
    { 
        int tmp = b;
        b = a % b;
        a = tmp;
    } 
    return a; 
} 
int LCM(int a, int b)
{
    return a * b / GCD(a, b);
} 
int solution(vector<int> arr) 
{ 
    int lcm; 
 for(int i = 1; i < arr.size(); ++i)
 {
     if (i == 1)
     { 
         lcm = LCM(arr[0], arr[1]);
         continue; 
     } 
     lcm = LCM(lcm, arr[i]);
 } 
 return lcm; 
}

 이 문제 역시 바로 최소공배수를 구하는 것이 아닌 최대공약수와 최소공배수의 곱이 두 수의 곱과 같음을 이용하며, 배열에 있는 모든 수를 한 번에 계산하는 것이 아니고

처음의 첫 번째와 두 번째 원소의 값으로 최소공배수를 구하고 그 공배수와 그 다음수로 최소공배수를 다시 계산하는 방식으로 계산하면 어렵지 않게 해결할 수 있을 것이라 생각합니다.

 

반응형