int solution(vector<int> arr) {
    int answer = 0;
    int max = 0;
    for(int i =0; i < arr.size(); ++i)
    {
        if(arr[i] > max)
        {
            max = arr[i];
        }
    }
    int n = 2;
    bool b = true;
    while(1)
    {
        answer = max * n++;
        for(int i = 0; i < arr.size(); ++i)
        {
            if(answer % arr[i] != 0)
            {
                b = false;
                break;
            }else
                b = true;
        }
        if(b) return answer;
    }
}

유클리드 호제법으로 풀면

int euclid(int a, int b)
{
    return b ? euclid(b, a % b) : a;
}

int lcm(int a, int b)
{
    return (a * b) / (euclid(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;
}