#include <string> #include <vector> #include <math.h> #include <map> using namespace std; vector<char> input; string result; int visited[7]; int answer; map<int, int> m; int is_prime(int n) { if(n == 1) { return 0; } for(int i = 2; i <= sqrt(n); i++) { if(n % i == 0) { return 0; } } return 1; } void DFS(int cnt) { if(cnt == input.size()+1) { return; } if(cnt >= 1) { // 중복허용 X if(is_prime(stoi(result)) == 1 && m[stoi(result)] == 0) { m[stoi(result)] = 1; answer++; } } for(int i = 0; i < input.size(); i++) { if(cnt == 0 && input[i] == '0') { continue; } if(visited[i] == 0) { visited[i] = 1; result += input[i]; DFS(cnt+1); result.erase(result.size()-1, 1); visited[i] = 0; } } } int solution(string numbers) { for(int i = 0; i < numbers.size(); i++) { input.push_back(numbers[i]); } DFS(0); return answer; } | cs |
'Programmers > Level 2' 카테고리의 다른 글
[프로그래머스 2] 더 맵게 (C/C++) (0) | 2019.10.22 |
---|---|
[프로그래머스 2] 가장 큰 수 (C/C++) (★★★) (0) | 2019.10.22 |
[프로그래머스 2] 큰 수 만들기 (C/C++) (★★) (0) | 2019.10.22 |
[프로그래머스 2] 프린터 (C/C++) (0) | 2019.10.22 |
[프로그래머스 2] 탑 (C/C++) (1) | 2019.10.21 |