본문 바로가기

코딩 테스트

프로그래머스 k진수에서 소수 개수 구하기

#include <string>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

bool OkPrimeNum(long long num)
{   
    if(num<2)
        return false;
    for(int i = 2; i <= sqrt(num); ++i)
    {
        if(num%i == 0)
        {
            return false;
        }
    }
    return true;
}

int solution(int n, int k) {
    int answer = 0;
    
    string num;
    
    while(n)
    {
        int temp = n%k;
        
        if(temp >= 10 && temp <=35)
        {
            num += temp + 55;
        }
        else {
            num += temp + '0';
        }
        n /= k;
    }
    reverse(num.begin(), num.end());
    long long result = 0;
    for(int i = 0; i<num.size();++i)
    {
        
        if(num[i] != '0')
        {
            result *= 10;
            result += (long long)(num[i] - '0');
        }
        else
        {
            if(OkPrimeNum(result))
            {
                answer++;
            }
            result = 0;
        }
    }
    
    if(OkPrimeNum(result))
    {
        answer++;
    }
    
    return answer;
}

'코딩 테스트' 카테고리의 다른 글

프로그래머스 피로도  (0) 2024.03.01
프로그래머스 1차 비밀지도  (0) 2024.02.14
프로그래머스 신고 결과 받기 문제  (0) 2024.02.14
백준 4101  (0) 2023.07.10
백준 2475  (0) 2023.07.09