문제풀이/프로그래머스
[프로그래머스] 소수 만들기
Hyeon-Uk
2021. 6. 7. 23:38
반응형
https://programmers.co.kr/learn/courses/30/lessons/12977
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
-풀이-
먼저 dfs를 이용하여 3종류의 숫자의 합을 만든다. 그런 뒤, 만들어진 합의 소수판별여부를 확인하여 answer를 갱신한다.
-코드-
#include <vector>
#include<cmath>
#include <iostream>
using namespace std;
int answer=0;
bool check(int n){
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
return false;
}
}
return true;
}
void dfs(int now,int sum,int cnt,vector<int>& nums){
if(cnt==3){
if(check(sum)) answer++;
return;
}
for(int i=now+1;i<nums.size();i++){
dfs(i,sum+nums[i],cnt+1,nums);
}
}
int solution(vector<int> nums) {
dfs(-1,0,0,nums);
return answer;
}
반응형