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

삼식이·2025년 6월 30일

알고리즘

목록 보기
66/84

N개의 최소공배수

문제에서 주어진 배열의 수를 2개씩 묶어 누적하여 최소공배수를 구하면 된다.

최대공약수(GCD)를 구하는 유클리드 호제법 함수는 기억해두면 유용하다. 이 문제에서 최소공배수를 구할 때, 두 수를 곱한 후 최대공약수로 나눈다.

해당 리턴값과 다음 배열값을 이용해 반복적으로 최소공배수를 구하면 된다.

#include <vector>
#include <iostream>

using namespace std;

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a % b);
}

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

int solution(vector<int> arr) {
    int answer = arr[0];

    for (int i = 1; i < arr.size(); i++) {
        answer = lcm(answer, arr[i]);
    }

    return answer;
}

0개의 댓글