https://programmers.co.kr/learn/courses/30/lessons/42839?language=cpp
풀이방법
- sort로 최대값 구하기
- 최대값까지 소수 찾기
- 찾은 소수를 string으로 바꿔 numbers에 포함되면 answer증가
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int answer =0;
int numSize = 0;
bool cmp(char a, char b) {
return a > b;
}
void isCheck(int pri, string numbers) {
string p = to_string(pri);
vector<bool> visit(numSize);
for (int i = 0; i < p.size(); i++) {
bool flag = false;
for (int j = 0; j < numbers.size(); j++) {
if (visit[j] == false && p[i]==numbers[j]) {
flag = true;
visit[j] = true;
break;
}
}
if (!flag) {
return;
}
}
answer++;
return;
}
void isPrime(string numbers) {
vector<bool> tmp(stoi(numbers)+1, false);
for (int i = 2; i <= stoi(numbers); i++) {
if (tmp[i]) continue;
isCheck(i,numbers);//포함하는지 확인
for (int j = i; j <=stoi(numbers); j += i) {
tmp[j] = true;
}
}
return;
}
int solution(string numbers) {
numSize = numbers.size();
sort(numbers.begin(), numbers.end(), cmp);
isPrime(numbers);
return answer;
}
int main() {
string numbers = "011";
cout<<solution(numbers);
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level2 - 위장 (0) | 2021.03.23 |
---|---|
2021 카카오공채 - 신규 아이디 추천 (0) | 2021.02.28 |
프로그래머스 level2 - 프린터 (0) | 2020.04.05 |
2017 카카오코드 본선 - 단체사진 찍기 (0) | 2020.04.04 |
2019카카오 인턴쉽 - 불량 사용자 (0) | 2020.04.03 |