[프로그래머스 / C++] N개의 최소공배수

Seulguo·2022년 10월 4일
0

Algorithm

목록 보기
178/185
post-thumbnail
post-custom-banner

🐣 문제

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12953


🐤 풀이

• 유클리드 호제법

int getGCD(int a, int b){
    int big = max(a,b);
    int small = min(a,b);
    
    while(big % small != 0){
        int r = big % small;
        big = small;
        small = r;
    }
    
    return small;
}

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


🐥 코드

#include <string>
#include <vector>

using namespace std;
    
int getGCD(int a, int b){
    int big = max(a,b);
    int small = min(a,b);
    
    while(big % small != 0){
        int r = big % small;
        big = small;
        small = r;
    }
    
    return small;
}

int solution(vector<int> arr) {
    int answer = arr[0];
    
    for(int i = 1; i < arr.size(); i++){
        int GCD = getGCD(answer, arr[i]);
        int LCM = answer * arr[i] / GCD;
        answer = LCM;
    }
    
    return answer;
}
post-custom-banner

0개의 댓글