공부/C++
[C++] 프로그래머스 소수 찾기
굴러다니다니
2025. 5. 2. 23:32
#include <string>
#include <vector>
#include <unordered_set>
using namespace std;
bool isPrime(int num){
if (num < 2) return false;
for (int i = 2; i * i <= num; i++){
if (num % i == 0) return false;
}
return true;
}
int DFS(string numbers, vector<bool>& visited, string currentNum, unordered_set<int>& check){
int count = 0;
if(currentNum.size() > 0){
int num = stoi(currentNum);
if(check.find(num) == check.end() && isPrime(num)){
check.insert(num);
count++;
}
}
for (int i = 0; i < numbers.size(); i++){
if (!visited[i]){
visited[i] = true;
count += DFS(numbers, visited, currentNum + numbers[i], check);
visited[i] = false;
}
}
return count;
}
int solution(string numbers) {
int count = 0;
vector<bool> visited(numbers.size(), false);
unordered_set<int> check;
return DFS(numbers, visited, "", check);
}
728x90
반응형