Programmers[level 2] 소수찾기
16075 단어 순열next_permuatationnext_permuatation
소수 찾기
-
문제 설명
-
제한 사항
-
입출력 예
-
입출력 예 설명
코드
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
#include <set>
using namespace std;
bool isPrime(int a) {
if (a == 0 || a == 1)return false;
for (int i = 2; i <= sqrt(a); i++) {
if (a % i == 0) return false;
}
return true;
}
int solution(string numbers) {
int answer = 0;
vector<int> vec;
set<int> b;
for (int i = 0; i < numbers.length(); i++) {//numbers 각 자리를 숫자로 분할
vec.push_back(numbers[i] - '0');
}
sort(vec.begin(), vec.end());
do {
// 순열을 돌리면서 index[0], index[0:1]~~index[0:7]이 소수이면 set에 추가,
// 이를 모든 순열에 적용.
int num = 0;
for (int i = 0; i < numbers.length(); i++) {
num += vec[i];
if (isPrime(num)) b.insert(num);
num *= 10;![](https://media.vlpt.us/images/98jihyun/post/dfca4382-8869-4c5a-9768-6c57173c5827/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-27%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.36.26.png)![](https://media.vlpt.us/images/98jihyun/post/3c8bdb1d-ec64-495b-b8b1-7f6b36018f04/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-27%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%205.36.41.png)
}
} while (next_permutation(vec.begin(), vec.end()));
answer = b.size();
return answer;
}
- 배운점
- 본 코드에서는 중복값을 제거하기 위해서 set를 사용했지만, set 대신에
vec.erase(unique(vec.begin(), vec.end()), vec.end());
Author And Source
이 문제에 관하여(Programmers[level 2] 소수찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@98jihyun/Programmerslevel-2-소수찾기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)