본문 바로가기

Coding Test

백준 21919 소수 최소 공배수

https://www.acmicpc.net/problem/21919

 

21919번: 소수 최소 공배수

수열 중에 소수는 2, 3, 5가 있다.

www.acmicpc.net

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;



bool isVisit[1000001];

bool isPrime(int k) {


    for (int i = 2; i <= sqrt(k); i++) {
        if (k % i == 0) {
            return false;
        }
    }

    return true;
}

int main() {

    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);


    int n;

    vector<int> prime;

    cin >> n;


    for (int i = 0; i < n; i++) {
        int temp;

        cin >> temp;

        if (isPrime(temp)) {
            prime.push_back(temp);
        }
    }

    //소수가 없는 경우 -1 출력
    if (prime.empty()) {
        cout << -1;
        return 0;
    }

    long long ans = 1;

    for (int i = 0; i < prime.size(); i++) {
        if (!isVisit[prime[i]]) {
            isVisit[prime[i]] = true;

            ans *= prime[i];
        }
    }


    cout << ans;



    return 0;
}

 

문제 그대로 구현하면 된다.

주어진 숫자에서 소수를 구한 뒤 이들의 최소공배수를 구한다.

 

소수들의 최소공배수는 이들을 곱한 것과 같다.

다만 입력으로 중복된 숫자가 들어올 수 있으므로

isVisit 배열을 추가하여 중복을 처리하였다.

'Coding Test' 카테고리의 다른 글

백준 16139 인간-컴퓨터 상호작용  (0) 2024.03.26
백준 1774 우주신과의 교감  (0) 2024.03.25
백준 17276 배열 돌리기  (1) 2024.03.23
백준 11000 강의실 배정  (0) 2024.03.22
백준 17836 공주님을 구해라!  (0) 2024.03.21