알고리즘/C++
[C++] 프로그래머스 소수 만들기
지휘리릭
2020. 3. 9. 15:38
#include <vector>
using namespace std;
int answer = 0;
vector<int> value;
void dfs(int index, int sum, int level){
if(level == 3){
int flag = 0;
for(int i = 2; i*i<=sum; i++){
if(sum%i == 0) {
flag = 1;
break;
}
}
if(flag == 0) answer += 1;
return;
}
if(index == value.size()) return;
else{
dfs(index + 1, sum + value[index], level + 1);
dfs(index + 1, sum, level);
}
}
int solution(vector<int> nums) {
value = nums;
dfs(0, 0, 0);
return answer;
}
에라토스테네스의 채를 사용해야할까 하다가 어차피 최대 값이 3000이므로 그냥 for문을 돌렸다.
소수 문제는 정말 자주 나오지만 나올 때마다 헷갈린다. 그렇지만 점점 적응하고 있는 것 같아서 뿌듯하다.