코딩 테스트
[프로그래머스] Level2 - k진수에서 소수 구하기
게임 만드는 나무꾼
2022. 10. 6. 12:50
1. 문제 설명
Link : https://school.programmers.co.kr/learn/courses/30/lessons/92335
2. 나의 풀이
#include <string>
#include <vector>
#include <sstream>
#include <stack>
using namespace std;
string ToNotation(int number, int notation)
{
stack<int> stk;
while(number >= 1)
{
stk.push(number % notation);
number = number / notation;
}
string ret = "";
while (!stk.empty())
{
ret += to_string(stk.top());
stk.pop();
}
return ret;
}
bool IsPrime(long long num)
{
if (num == 0 || num == 1)
return false;
for (long i = 2; i * i <= num; ++i)
{
if (num % i == 0)
return false;
}
return true;
}
int solution(int n, int k)
{
string num = ToNotation(n, k);
stringstream ss(num);
string buf;
int answer = 0;
while(getline(ss, buf, '0'))
{
if (buf.empty())
continue;
if (IsPrime(stoll(buf)))
++answer;
}
return answer;
}
진법 변환을 하고 나면 자리수가 매우 커질 수 있으므로 long long을 사용해야 런타임 오류를 피할 수 있다.
코딩 테스트 답안은 GitHub에도 업로드합니다.
GitHub Link : https://github.com/KimNamWook316/CodingTestSolved