πŸ’  Cpp/[Solved.ac] Class2~4

[BOJ][C++] λ°±μ€€ 1978번: μ†Œμˆ˜ μ°ΎκΈ°

선달 2023. 2. 23. 22:44
λ°˜μ‘ν˜•

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

 

1978번: μ†Œμˆ˜ μ°ΎκΈ°

첫 쀄에 수의 개수 N이 주어진닀. N은 100μ΄ν•˜μ΄λ‹€. λ‹€μŒμœΌλ‘œ N개의 μˆ˜κ°€ μ£Όμ–΄μ§€λŠ”λ° μˆ˜λŠ” 1,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.

www.acmicpc.net

 

문제

주어진 수 N개 μ€‘μ—μ„œ μ†Œμˆ˜κ°€ λͺ‡ κ°œμΈμ§€ μ°Ύμ•„μ„œ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫 쀄에 수의 개수 N이 주어진닀. N은 100μ΄ν•˜μ΄λ‹€. λ‹€μŒμœΌλ‘œ N개의 μˆ˜κ°€ μ£Όμ–΄μ§€λŠ”λ° μˆ˜λŠ” 1,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.

좜λ ₯

주어진 μˆ˜λ“€ 쀑 μ†Œμˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

 

풀이

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    
    // μ•„λ¦¬ν† μŠ€ν…Œλ„€μŠ€μ˜ 체
    vector<bool> isPrime(1001, true);
    isPrime[1] = false;
    for(int i=2; i<1001; i++) {
        if(!isPrime[i])
            continue;
        for(int j=i*i; j<1001; j+=i)
            isPrime[j] = false;
    }
    
    // μž…λ ₯
    int n;
    cin >> n;
    vector<int> input(n);
    for(int i=0; i<n; i++)
        cin >> input[i];
    
    // μ—°μ‚°
    int ans = 0;
    for(int i=0; i<n; i++) {
        if(isPrime[input[i]])
            ans++;
    }
    
    // 좜λ ₯
    cout << ans;
    
    return 0;
}
λ°˜μ‘ν˜•