본문 바로가기

코딩테스트 준비

Summer/Winter Coding(~2018)소수 만들기_c++

programmers.co.kr/learn/courses/30/lessons/12977

#include <vector>
#include <algorithm>
#include<set>
#include<math.h>
#include <iostream>
using namespace std;


bool isPrime(int n){
    if(n <2) return false;
    
    for(int  i=2; i<=sqrt(n); i++){
        if(n%i == 0) return false;
    }
    return true;
}


int solution(vector<int> nums) {
    int answer = 0;
    set<int> s;
    vector<int> v;
    int cnt = 0;
    
    for(int i=0; i< nums.size(); i++){
        for(int j = i+1; j <nums.size() ; j++){
            for(int k = j +1; k < nums.size() ;k++){
                answer = nums[i] + nums[j] + nums[k];
                
                v.push_back(answer) ;
                
            }
        }
    }
    
    for(int i=0; i< v.size() ;i++){
        if(isPrime(v[i])){
             cnt ++;
        }    
        
    }
    

    return cnt;
}
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
  • 이 조건을 못보고 더해서 set에 넣었는데 굳이 안그래도 되며 
  • 처음엔 순열조합해서 풀었는데 그러면 시간초과 난다;;;;;;;;;;;

 

'코딩테스트 준비' 카테고리의 다른 글

9093_단어뒤집기 c++백준  (0) 2021.05.28
백준 1152_단어의개수 c++  (0) 2021.05.25
1026_보물 백준 c++  (0) 2021.04.16
백준 12845_모두의마블  (0) 2021.01.09
2217_로프 백준 Greedy  (0) 2021.01.08