본문 바로가기
프로그래머스

k진수에서 소수 개수 구하기 C++

by paysmile 2022. 2. 19.

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 <cmath>
#include <algorithm>

using namespace std;

bool ischeck(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 value;

	while (n) {
		value += to_string(n%k);
		n = n / k;
	}
	
	string prime;
	for (int i = 0; i < value.size(); i++) {
		if ((value[i] == '0') && prime.size()>0) {
			reverse(prime.begin(), prime.end());
			if (ischeck(stoll(prime))) answer++;
			prime = "";
		}
		else if(value[i] != '0')
			prime += value[i];
	}

	if (prime.size() > 0) {
		reverse(prime.begin(), prime.end());
		if (ischeck(stoll(prime))) answer++;
	}

	return answer;
}

'프로그래머스' 카테고리의 다른 글

외벽 점검 C++  (0) 2022.02.21
신고 결과 받기 C++  (0) 2022.02.19
양궁대회 C++  (0) 2022.02.19
주차 요금 계산 C++  (0) 2022.02.18
파괴되지 않은 건물 C++  (0) 2022.02.15