알고리즘/programmers

[Programmers] k진수에서 소수 개수 구하기

꾸준함. 2022. 1. 19. 00:53

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/92335

 

코딩테스트 연습 - k진수에서 소수 개수 구하기

문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소

programmers.co.kr

문자열 처리를 통해 쉽게 풀 수 있는 문제였습니다.

 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
string convert(int n, int k)
{
string result;
while (n)
{
result += to_string(n % k);
n /= k;
}
reverse(result.begin(), result.end());
return result;
}
bool isPrime(string temp)
{
if (temp.empty() || temp == "1")
{
return false;
}
long long number = stol(temp);
for (long long i = 2; i <= sqrt(number); i++)
{
if (number % i == 0)
{
return false;
}
}
return true;
}
int solution(int n, int k) {
string s = convert(n, k);
string temp;
int answer = 0;
for (char c : s)
{
if (c == '0')
{
if (!temp.empty()
&& isPrime(temp))
{
answer++;
}
temp = "";
continue;
}
temp += c;
}
if (!temp.empty()
&& isPrime(temp))
{
answer++;
}
return answer;
}
view raw .cpp hosted with ❤ by GitHub

 

개발환경: Programmers IDE

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형