프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이방법
순열을 이용하여 구할 수 있는 모든 조합을 구한 후 소수인지 판별하고 소수라면 중복을 제거하기 위해 set 자료구조에 담은 후 set의 크기를 반환하였다.
#include <string>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
bool isPrime(int n) {
if(n == 0 || n == 1)
return false;
for(int i = 2; i*i <= n; i++)
if(n % i == 0) return false;
return true;
}
int solution(string numbers) {
int answer = 0;
set<int> tmp;
sort(numbers.begin(), numbers.end());
do {
for(int i = 1; i <= numbers.size(); i++) {
int num = stoi(numbers.substr(0, i));
if(isPrime(num)) tmp.insert(num);
}
} while(next_permutation(numbers.begin(), numbers.end()));
return tmp.size();
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
오픈채팅방/C++ (0) | 2023.02.08 |
---|---|
방문 길이/C++ (0) | 2023.02.06 |
큰 수 만들기/C++ (0) | 2023.02.03 |
하노이의 탑/C++ (0) | 2023.02.03 |
스킬트리/C++ (0) | 2023.02.03 |