본문 바로가기
전공공부/코딩테스트

(c++) 프로그래머스 "k진수에서 소수 찾기"

by 시아나 2022. 4. 26.

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

 

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

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

programmers.co.kr


#include <string>
#include <vector>
#include <sstream>
#include <cmath>

using namespace std;

bool sosu(long long n) {
    if (n == 1) return false;
    if (n != 2 && n % 2 == 0) return false;
    for (int i = 3; i <= sqrt(n); i++) {
        if (n % i == 0) return false;
    }
    return true;
}

int solution(int n, int k) {
    int answer = 0;
    string numbers = "", tmp;
    while (n) {
        numbers = to_string(n % k) + numbers;
        n /= k;
    }
    stringstream ss(numbers);
    while (getline(ss, tmp, '0')) {
        if (tmp.size() > 0 && sosu(stol(tmp))) answer++;
    }
    return answer;
}

자료형을 잘 생각하자