def is_prime(c): if c < 2: # 0, 1은 소수가 아님 return False if c % 2 == 0: # 짝수는 2만 소수 return c == 2 i = 3 while i * i <= c: if c % i == 0: return False i += 2 # 홀수만 검사 return Truedef solution(n, k): tmp = "" while n > 0: tmp += str(n%k) n //= k cand = list(filter(lambda x: len(x)>0 , tmp[::-1].split('0'))) prime = 0 for c in cand: prime += is_prime(int(c)) return prime
📖What I learned
string += 연산보다 list로 만들어 append하고 나중에 ''.join() 연산이 더 빠르다는 것을 알아두자
소수 구할 때 시간 줄이기!! → n까지 나눠보는 것이 아니라 n의 제곱근까지만 나눠보면 됨!!