반응형
1. 10진수로 주어진 숫자를 k진수로 변환후 문자열로 저장
2. 소수를 담을 long long 타입의 벡터 생성 후 문자열에서 숫자에 해당되는 부분들을 담기.
3. 소수인지 아닌지 판단하는 함수 호출
"2 ~ 루트(n)" 에 해당하는 값으로 n을 나눈다.
나누어진다면 false 반환
그렇지 않다면 true 반환
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <map>
#include <cmath>
using namespace std;
typedef long long ll;
bool is_prime(ll n) {
if(n < 2) return false;
for(int i=2; i<=sqrt(n); ++i) {
if(n % i == 0) return false;
}
return true;
}
int solution(int n, int k) {
int answer = 0;
string s=""; int prev=0;
while(n){
s+=(n%k)+'0';
n/=k;
}
reverse(s.begin(),s.end());
cout << s << endl;
string temp ="";
vector <ll> prime;
for(int i=0; i<s.size(); i++){
if(s[i]>='1'&&s[i]<='9')temp+=s[i];
else{
if(!temp.empty()){
prime.push_back(stoll(temp));
temp="";
}
}
}
if(temp.size())prime.push_back(stoll(temp));
for(int i=0; i<prime.size(); i++) if(is_prime(prime[i])) answer++ ;
return answer;
}
반응형
'프로그래머스 > Level_2' 카테고리의 다른 글
[Level_2 / C++ / 카카오] 괄호 변환 (0) | 2022.01.29 |
---|---|
[Level_2 / C++ / 카카오] 메뉴 리뉴얼 (0) | 2022.01.28 |
[Level_2 / C++ / 카카오] 문자열 압축 (0) | 2022.01.24 |
[Level_2 / C++ / 카카오] [1차] 캐시 (0) | 2022.01.24 |
[Level_2 / C++ / 카카오] 프렌즈4블록 (0) | 2022.01.20 |
댓글