본문 바로가기

[프로그래머스/C++] k진수에서 소수 개수 구하기

@ansi.2024. 3. 12. 18:13

https://school.programmers.co.kr/learn/courses/30/lessons/92335

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Lv. 2

2022 KAKAO BLIND RECRUITMENT


주석으로 설명을 대체합니다.

 

#include <string>
#include <vector>
#include <cmath>
using namespace std;

bool isPrime(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;
    
    // 10진수를 k진수로 변환
    string str = "";
    while (n > 0) {
        str = to_string(n % k) + str;
        n /= k;
    }
    
    // 소수인지 판단
    string tmp = "";
    for (char c : str) {
        if (c == '0' && !tmp.empty()) {
            if (isPrime(stoll(tmp)))
                answer++;
            tmp.clear();
        } else
            tmp += c;
    }
    
    // 마지막 남은 tmp 검사
    if (!tmp.empty() && isPrime(stoll(tmp)))
        answer++;
    
    return answer;
}
ansi.
@ansi. :: 공부 기록 공간 🌟

공부한 걸 기록합니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차