n 을 k 진수로 변환한 후, '0' 으로 split() 하여 저장한다: converted
(왼쪽/오른쪽/양쪽 에 0 이 있거나, 양쪽에 아무 수도 없어야 함)
converted
에서 소수인 수의 개수를 반환한다.
def solution(n, k):
answer = 0
converted = dec_to(n, k).split('0')
for num in converted:
if num != '' and is_prime(int(num)):
answer += 1
return answer
def dec_to(n, base):
result = ''
while n > 0:
n, mod = divmod(n, base)
result += str(mod)
return result[::-1]
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) +1):
if n % i == 0:
return False
return True
1은 소수가 아니다. (참고문제1)
다른 코드
def solution(n, k):
answer = 0
converted = dec_to(n, k).split('0')
return sum(1 for num in converted if num != '' and is_prime(int(num)))