[프로그래머스] 소수찾기 - (완전탐색) c++
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.
string a = "0123456";
1. cout<<a.substr(2);
출력: 23456
2. cout<<a.substr(2,2);
출력: 23
next_permutation은 단순히 인자로 넘어왔을 때의 상황만 보고, 다음 순서에 해당하는 순열을 반환해주기 때문에 정렬되지 않은 container를 조작할 때에는 모둔 순열을 반환받을 수 없습니다.
int solution(string numbers) {
// 중복 방지를 위한 집합 자료구조
unordered_set<int> answer;
int temp=0;
sort(numbers.begin(),numbers.end());
do {
for (int i=1; i<numbers.size()+1; i++){
// 가능한 숫자의 조합을 모두 만들기위해 substr로 숫자의 길이를 변형
temp = stoi(numbers.substr(0, i));
if (isPrime(temp))
answer.insert(temp);
}
// next permutation 함수를 이용해 numbers의 값들을 다음 순열로 바꿈
} while(next_permutation(numbers.begin(), numbers.end()));
return answer.size();
Author And Source
이 문제에 관하여([프로그래머스] 소수찾기 - (완전탐색) c++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mopevxw/프로그래머스-소수찾기-완전탐색-c저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)