fromcollectionsimportdequedefconvert_k_num(n,k):ret=''whilen>0:ret+=str(n%k)# 나머지
n=n//k# 몫
return''.join(reversed(ret))defis_prime(k):ifk==2ork==3:returnTrue# 2 or 3 은 소수
ifk%2==0ork<2:returnFalse# 2의 배수이거나 0,1은 소수가 아님
foriinrange(3,int(k**0.5)+1,2):# 3부터 sqrt(k)까지 2씩 증가하며 확인
ifk%i==0:returnFalsereturnTruedefsolution(n,k):answer=-1k_num=convert_k_num(n,k)k_num_list=deque(list(k_num))k_num_list.append('0')result=[];tmp=''whilek_num_list:x=k_num_list.popleft()ifx!='0':tmp+=xifx=='0':iftmp!=''andis_prime(int(tmp)):result.append(tmp)tmp=''answer=len(result)returnanswer