문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/92335
코딩테스트 연습 - k진수에서 소수 개수 구하기
문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소
programmers.co.kr
문자열 처리를 통해 쉽게 풀 수 있는 문제였습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
#include <vector> | |
#include <algorithm> | |
#include <cmath> | |
using namespace std; | |
string convert(int n, int k) | |
{ | |
string result; | |
while (n) | |
{ | |
result += to_string(n % k); | |
n /= k; | |
} | |
reverse(result.begin(), result.end()); | |
return result; | |
} | |
bool isPrime(string temp) | |
{ | |
if (temp.empty() || temp == "1") | |
{ | |
return false; | |
} | |
long long number = stol(temp); | |
for (long long i = 2; i <= sqrt(number); i++) | |
{ | |
if (number % i == 0) | |
{ | |
return false; | |
} | |
} | |
return true; | |
} | |
int solution(int n, int k) { | |
string s = convert(n, k); | |
string temp; | |
int answer = 0; | |
for (char c : s) | |
{ | |
if (c == '0') | |
{ | |
if (!temp.empty() | |
&& isPrime(temp)) | |
{ | |
answer++; | |
} | |
temp = ""; | |
continue; | |
} | |
temp += c; | |
} | |
if (!temp.empty() | |
&& isPrime(temp)) | |
{ | |
answer++; | |
} | |
return answer; | |
} |

개발환경: Programmers IDE
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 카카오프렌즈 컬러링북 (0) | 2022.01.26 |
---|---|
[Programmers] 단체사진 찍기 (0) | 2022.01.26 |
[Programmers] 신고 결과 받기 (3) | 2022.01.16 |
[Programmers] 소수 찾기 (0) | 2021.12.21 |
[Programmers] 서울에서 김서방 찾기 (0) | 2021.12.18 |