Gidhub BE Developer

[Programmers] 소수의 합

2018-09-26
goodGid

Problem

Problem URL : 소수의 합


[1] Answer Code (18. 09. 26)

#include <vector>
using namespace std;
vector<int> v;
void primeNumber(int n){
    vector<long long> chk(n+1, 0);
    
    for(long long i=2; i<=n; i++){
        if(chk[i] == 1) continue;
       
        chk[i] = 1;
        v.push_back(i);
        
        for(long long j=i*2; j<=n; j+=i){
            chk[j] = 1;
        }
    }
}

long long solution(int N) {
    long long answer = 0;
    primeNumber(N);
    for(int i=0; i<v.size(); i++){
        answer += v[i];
    }
    return answer;
}

Review

  • n의 범위가 2이상 10,000,000이하 이다.

  • 그래서 배열로 arr[10000001]로 선언하면 안된다.

  • 그 대신 동적으로 사이즈를 잡아주는 vector chk(n+1, 0); 식으로 선언을 하여서 해결했다.


Recommend

Index