강의로 돌아가기
yangws1

더이상 최적화하는 법을 모르겠습니다 ㅜㅜ

알고리즘 연습은 처음인데, 효율성 테스트에서 항상 걸리네요 ㅜㅜ;
1을 먼저 거르고 2를 제외한 2의배수를 먼저 거르고 나서 나머지 홀수에 대해서만 나눠떨어지는지 판정을 내려서
소수만 모인 벡터를 만들고 합을 계산했습니다. 어디가 문제일까요 ㅜㅜ

vector<int> v;
void primevec(int k){
    int j = 2;
    while(j <= k){
        int ifprime = 1;
        if(j != 2 && j % 2 == 0) {
            j++;
            continue;
        }
        for(int i = 3; i <= j/2; i += 2){
            if(j%i==0) {
                ifprime = 0;
                break;
            }
        }
        j++;
        if(ifprime == 0){
            continue;
        }
        v.push_back(j-1);
    }
}
long long solution(int N) {
    long long answer = 0;
    primevec(N);
    for(vector<int>::size_type i = 0; i != v.size(); i++){
        answer += v[i];
    }
    return answer;
}
  • JaeYoun Bang
    벡터로 만들 필요 없이 소수인게 판정되면 바로 answer에 더해주면 되지 않을까요? JaeYoun Bang 2018.12.10 22:13
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.