https://school.programmers.co.kr/learn/courses/30/lessons/92335
n을 기본 k로 변환(n이 0이 될 때까지 k로 나누기),
0이 아닌 숫자만 나누기(split(‘0’))
소수인지 확인하기만 하면 됩니다.
먼저 findPrime에서 반복 문의 범위를 (2, num//2)로 설정했지만 tc1에서 만료되었습니다.
그래서 범위를 다시 (2, 제곱근 + 1)로 설정했습니다.
# 프로그래머스 92335: k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT)
def findPrime(num): # 소수 찾기
if num == 1:
return False
for i in range(2, int(num**(1/2))+1):
if num % i == 0:
return False
return True
def solution(n, k):
s=""
while n > 0: # k진수로 변환
s = str(n % k) + s
n //= k
answer = 0
for i in s.split('0'):
if i !
= '':
if (findPrime(int(i))):
answer += 1
return answer