2진법, 10진법 등 k진법으로 바꾸는 부분을 학습할 수 있는 문제였다
0을 기준으로 문자열을 split하면 0이 붙어있을 경우 빈 문자열이 list안에 들어가게 되므로 빈 문자열이 나오는 경우, 소수가 아닌 1이 들어있는 경우를 제외해주고 소수검정을 해주면 된다
import math
def isPrime(num):
for i in range(2, int(math.sqrt(num))+1):
if num%i==0:
return False
return True
def solution(n, k):
answer = 0
#k진법으로 바꾸기
tmp = ''
while n:
tmp = str(n%k)+tmp
n = n//k
tmp = tmp.split('0')
for t in tmp:
#0으로 split하면 0이 2개가 붙어있을 경우 빈 공간이 생길 수 있음
#1은 소수가 아니므로 제외
if len(t)==0 or int(t)==1:
continue
if isPrime(int(t)):
answer+=1
return answer