C++:: 프로그래머스 < N개의 최소공배수 >

jahlee·2023년 7월 26일
0

프로그래머스_Lv.2

목록 보기
85/106
post-thumbnail

주어지는 숫자들의 전체 최소공배수를 구하면 되는 문제이다. 크게 어렵지 않다.

#include <string>
#include <vector>
#include <unordered_map>
#include <cmath>
using namespace std;

int solution(vector<int> arr) {
    int answer = 1;
    unordered_map<int, int> um;// 전체 최소 공배수들을 담아주는
    for (auto num : arr) {
        unordered_map<int, int> tmp;// 해당 숫자 공약수
        while (num > 1) {
            int i = 2;
            for (; i<num; i++) {
                if ((num / i) * i == num) break;
            }
            tmp[i]++;
            num /= i;
        }
        for (auto c : tmp) {
            um[c.first] = max(um[c.first], c.second);
        }
    }
    for (auto c : um) answer *= pow(c.first, c.second);
    return answer;
}

0개의 댓글